我的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')
还是其排列都不起作用。
我似乎无法找到一种优雅的方法来保存毫秒(如果发生的话),并将其解析为时区感知日期时间对象。
答案 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
格式。