python将datetime格式化的字符串转换为秒

Vam*_*ame 6 python datetime epoch strptime

我正在尝试将日期字符串解码为纪元,但我很难获得时区.这是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'
Run Code Online (Sandbox Code Playgroud)

如果我摆脱时区(.000Z)它可以工作,但我也需要时区.

Mar*_*ers 8

.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')
Run Code Online (Sandbox Code Playgroud)

演示:

>>> 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)
Run Code Online (Sandbox Code Playgroud)

请注意,在我的Mac OS X笔记本电脑上,%f适用于time.strptime(); 但是,不保证能在任何地方工作.

datetime.datetime()可以使用该datetime.timetuple()方法将对象转换为时间元组.