我正在尝试将日期字符串解码为新纪元,但是我很难获取时区。这是Amazon S3密钥的最后修改日期。
time.strptime(key.last_modified, '%Y-%m-%dT%H:%M:%S.%Z')
ValueError: time data u'2013-10-20T00:41:32.000Z'
does not match format '%Y-%m-%dT%H:%M:%S.%Z'
如果我摆脱了时区(.000Z),它会起作用,但是我也需要时区。
在.000Z
不被识别为一个时区偏移。实际上,您有毫秒和一个时区(Z
UTC),并且正式地,time.strptime()
解析器无法处理毫秒。在某些平台上,%f
将解析微秒部分,然后丢弃信息。
在datetime.datetime.strptime()
类的方法,但是,可以,但没有时区,但是,解析Z
为文字,它可以工作:
from datetime import datetime
datetime.strptime(key.last_modified, '%Y-%m-%dT%H:%M:%S.%fZ')
演示:
>>> from datetime import datetime
>>> import time
>>> example = u'2013-10-20T00:41:32.000Z'
>>> datetime.strptime(example, '%Y-%m-%dT%H:%M:%S.%fZ')
datetime.datetime(2013, 10, 20, 0, 41, 32)
>>> time.strptime(example, '%Y-%m-%dT%H:%M:%S.%fZ')
time.struct_time(tm_year=2013, tm_mon=10, tm_mday=20, tm_hour=0, tm_min=41, tm_sec=32, tm_wday=6, tm_yday=293, tm_isdst=-1)
请注意,在我的Mac OS X笔记本电脑上,它%f
适用于time.strptime()
; 但是,不能保证它在任何地方都可以工作。
datetime.datetime()
可以使用datetime.timetuple()
方法将对象转换为时间元组。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句