2024-05-23 15:49:12 发布
网友
我试图将日期字符串解码为epoch,但我很难得到时区。这是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),它会工作,但我也需要时区。
2013-10-20T00:41:32.000Z
在这个字符串中,32.000是秒,精确到千分之一Z'是UTC的时区,俗称Zulu time。
如果您查看Python 2.x文档中的这个table,那么%S参数只能处理不含小数点的[00,61]范围。61代表闰秒。这就是为什么字符串格式不匹配的原因。您需要从字符串中删除小数点后的三个零。
%S
无法将.000Z识别为时区偏移量。实际上,您有毫秒和时区(Z是UTC),并且正式,time.strptime()解析器无法处理毫秒。在上,一些平台%f将解析微秒部分,然后丢弃信息。
.000Z
Z
time.strptime()
%f
然而,^{} class method,可以,但是不能时区;将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()对象转换为时间元组可以使用^{} method完成。
datetime.datetime()
2013-10-20T00:41:32.000Z
在这个字符串中,32.000是秒,精确到千分之一Z'是UTC的时区,俗称Zulu time。
如果您查看Python 2.x文档中的这个table,那么
%S
参数只能处理不含小数点的[00,61]范围。61代表闰秒。这就是为什么字符串格式不匹配的原因。您需要从字符串中删除小数点后的三个零。无法将
.000Z
识别为时区偏移量。实际上,您有毫秒和时区(Z
是UTC),并且正式,time.strptime()
解析器无法处理毫秒。在上,一些平台%f
将解析微秒部分,然后丢弃信息。然而,^{} class method ,可以,但是不能时区;将
Z
解析为一个文本,它可以工作:演示:
注意,在我的Mac OS X笔记本电脑上,
%f
适用于time.strptime()
;但是,它不能保证在任何地方都能工作。将} method 完成。
datetime.datetime()
对象转换为时间元组可以使用^{相关问题 更多 >
编程相关推荐