我必须收到一个字符串,表示通过time.strptime处理的日期,其格式类似于%d%m%Y,但事实是当日期数小于10时,那一天将显示为一位数数字,而不是%d格式所需的两位数.
这意味着
'8052012'
Run Code Online (Sandbox Code Playgroud)
将被转换为
day 08, month 05, year 2012
Run Code Online (Sandbox Code Playgroud)
但随着字符串
'2052012'
Run Code Online (Sandbox Code Playgroud)
strptime给了我
day 20, month 5, year 2012
Run Code Online (Sandbox Code Playgroud)
代替
day 2, month 5, year 2012
Run Code Online (Sandbox Code Playgroud)
有没有办法解决这个默认行为?(也许是为了强迫%m应该是一个2位数字,所以strptime将没有选择使用当天剩下的东西?)
编辑:请注意,在输入字符串上,月份总是有两位数,即使它可以用一个数字表示.这里的问题只是可以用一个或两个数字表示的那一天,具体取决于幅度......
我正在尝试解析mbox格式的电子邮件假脱机.
我有代码执行此操作:
if string.find(line, 'Date: ') == 0:
try:
when = time.mktime(time.strptime(line[6:30], "%a, %d %b %Y %H:%M:%S"))
Run Code Online (Sandbox Code Playgroud)
通常它似乎工作正常,除了当行='日期:星期六,2004年4月17日22:29:37 -0400 \n'它似乎给出了错误的结果(22:29:03而不是22:29:37 ).
这是我的pdb跟踪:
(Pdb) p line
'Date: Sat, 17 Apr 2004 22:29:37 -0400\n'
(Pdb) p time.strptime(line[6:30], "%a, %d %b %Y %H:%M:%S")
time.struct_time(tm_year=2004, tm_mon=4, tm_mday=17, tm_hour=22, tm_min=29, tm_sec=3, tm_wday=5, tm_yday=108, tm_isdst=-1)
(Pdb)
Run Code Online (Sandbox Code Playgroud)
结果似乎是34秒.我究竟做错了什么?
我正在使用一些略有不同风格的python日期时间.问题是,我希望能够将它们等同起来,我不能.从数据库中,我得到的日期时间格式为:
datetime.date(2010, 11, 15)
Run Code Online (Sandbox Code Playgroud)
返回时输出:
2010-11-15
Run Code Online (Sandbox Code Playgroud)
但是,在我的结尾,我需要将csv文件中的某些日期转换为日期时间.我这样做是通过使用datetime.datetime.strptime包.所以,这里我的代码如下所示:
date = '11/15/2010' #The format in the CSV file
date = date.replace('/', ' ')
date2 = datetime.datetime.strptime(date, '%m %d %Y')
Run Code Online (Sandbox Code Playgroud)
但是,date2在打印时输出:
2010-11-15 00:00:00
Run Code Online (Sandbox Code Playgroud)
而这两个日期虽然实际上是相同的,但是True当我==在它们之间抛出时,它们不会评估.有没有办法datetime.datetime.strptime省去小时,分钟,秒?我想要符合第一个例子(我的数据库)中使用的格式.谢谢
我正在 Python 模块中编写一个方法,它试图让用户的生活更轻松。此方法实现在该日历中创建事件。
def update_event(start_datetime=None, end_datetime=None, description=None):
'''
Args:
start_date: string datetime in the format YYYY-MM-DD or in RFC 3339
end_date: string datetime in the format YYYY-MM-DD or in RFC 3339
description: string with description (\n are transforrmed into new lines)
'''
Run Code Online (Sandbox Code Playgroud)
如果用户指定 start_date 或 end_date,则应进行检查以确定日期是 YYYY-MM-DD 格式还是日期时间 RFC 3339 格式。
if (start_date is not None):
# Check whether we have an date or datetime value
# Whole day events are represented as YYYY-MM-DD
# Other events are represented as …Run Code Online (Sandbox Code Playgroud) 我有时间格式:
Sat Jan 17 04:33:06 +0000 2015
Run Code Online (Sandbox Code Playgroud)
我无法匹配strptime格式.我能找到最接近的:基本日期时间类型是%c"Locale的适当日期和时间表示." 但是,这并不完全匹配.
我要去:
time_vec = [datetime.strptime(str(x),'%c') for x in data['time']]
Run Code Online (Sandbox Code Playgroud)
任何帮助,将不胜感激.
我试图从txt文件中获取日期时间.在该文件中的时间呈现[与]它周围.
我知道第一行总是一个时间戳.但是当我尝试使用strptime获取日期时间时,我收到一条错误消息.
我搜索了其他解决方案.但似乎没有发现任何符合我的错误.
码:
FileYSI = open(FilenameYSI,'r')
TimeStampYSI = [next(FileYSI)for x in xrange(1)]
print TimeStampYSI[0]
if TimeStampYSI[0][0] == '['
TimeFP = time.strptime(TimeStampYSI[0],'[%y-%m-%d,%H:%M:%S.%f]\n')
Run Code Online (Sandbox Code Playgroud)
错误:
[2015-09-22,08:10:00.600000]
Traceback (most recent call last):
File "C:/Users/brondert/Documents/realtime_data_aquadrone/trunk/src/MergeLogs.py", line 129, in <module>
MergeLogs("test")
File "C:/Users/brondert/Documents/realtime_data_aquadrone/trunk/src/MergeLogs.py", line 92, in MergeLogs
TimeFP = time.strptime(TimeStampYSI[0],'[%y-%m-%d,%H:%M:%S.600000]\n')
File "C:\Python27\lib\_strptime.py", line 467, in _strptime_time
return _strptime(data_string, format)[0]
File "C:\Python27\lib\_strptime.py", line 325, in _strptime
(data_string, format))
ValueError: time data '[2015-09-22,08:10:00.600000]\n' does not match format '[%y-%m-%d,%H:%M:%S.600000]\n'
Run Code Online (Sandbox Code Playgroud) 我一直在尝试将这种特定的日期格式转换为Python中的字符串,如下所示:
datetime.strptime(‘2017-01-12T14:12:06.000-0500’,'%Y-%m-%dT%H:%M:%S.%f%Z')
Run Code Online (Sandbox Code Playgroud)
但它不起作用.
我究竟做错了什么?
我的同事(已经离开公司)写了一堆脚本,包括批处理和Perl脚本,我正在摆脱区域设置依赖.
在最后一个Perl脚本中,他编写了以下代码:
my $format = "%d.%m.%Y %H:%M";
my $today_converted = Time::Piece->strptime($today, $format) - ONE_HOUR - ONE_HOUR - ONE_HOUR - ONE_HOUR - ONE_HOUR;
Run Code Online (Sandbox Code Playgroud)
(想法是在特定日期的午夜前五个小时)
值$today似乎是"03/04/2017"(代表4月3日(欧洲日期格式)),这似乎不被Time :: Piece实现理解:
Error parsing time at C:/Perl64/lib/Time/Piece.pm line 481.
Run Code Online (Sandbox Code Playgroud)
我可以使用哪种格式,Time :: Piece Perl实现可以理解?
我在将时间字符串转换为datetime对象时遇到麻烦:而且我知道这个问题已经被问过几次了,但是我一直无法为我的问题找到解决方案。
这是我的代码:
order['created'] = 2018-12-22T00:41:30.926932Z
created_at = datetime.datetime.strptime(order['created'],'%m/%d/%Y %H:%M:%S.%f').replace(tzinfo=pytz.utc).astimezone(local_tz)
Run Code Online (Sandbox Code Playgroud)
这是我收到的错误消息
ValueError:时间数据'2018-12-22T00:41:30.926932Z'与格式'%m /%d /%Y%H:%M:%S.%f'不匹配
我正在尝试将一个字符字段转换为一个日期字段,该日期字段的选项将使用strptimefunction或as.Datefunction。这是两个可重现的示例:
strptime(c("5/13/2015"),"%m/%d/%y")
#result is "2020-05-13 MST"
as.Date(c("5/13/2015"), format = "%m/%d/%y")
#result is "2020-05-13"
Run Code Online (Sandbox Code Playgroud)
为什么职能从2015年更改为2020年?如果相反,我格式化日期字符串并使用as.Date函数起作用。这是我所做的:
as.Date(c("2015/5/13"))
Run Code Online (Sandbox Code Playgroud)
而且效果很好。
有什么想法吗?