strptime,格式化和保存毫秒

时间:2015-03-31 11:09:37

标签: python python-3.x

我的gps,通过gpsd,以格式

回吐一段时间

time_string = '1582-10-04T12:34:56.000Z'

我可以将此字符串转换为时区感知datetime对象 与

from datetime import datetime, timedelta, timezone
timeformat = '%Y-%m-%dT%H:%M:%S.000Z'  # ISO8601
datetime.strptime(time_string, timeformat).replace(tzinfo=(timezone(timedelta(0))))  

......很酷。我可以操纵对象,添加,减去,更改时区,计算包含时区变化的时间增量等。

问题是偶尔应用程序的某些方面将返回附加毫秒的时间字符串。

time_string = '1582-10-04T12:34:56.123Z'

......所有的一切都破裂了。

.strip('Z')没有做到。

timeformat = '%Y-%m-%dT%H:%M:%S< - 没有.000.000Z 无论是b.strip('.000Z')还是其排列都不起作用。

我似乎无法找到一种优雅的方法来保存毫秒(如果发生的话),并将其解析为时区感知日期时间对象。

1 个答案:

答案 0 :(得分:2)

如何用000替换%f

from datetime import datetime, timedelta, timezone
time_string = '1582-10-04T12:34:56.123Z'
timeformat = '%Y-%m-%dT%H:%M:%S.%fZ'
datetime.strptime(time_string, timeformat).replace(tzinfo=(timezone(timedelta(0))))

输出:

datetime.datetime(1582, 10, 4, 12, 34, 56, 123000, tzinfo=datetime.timezone.utc)

请参阅strftime() and strptime() Behavior %f格式。