首页 > 解决方案 > 从 T 和 Z 转换为日期时间时,时间戳秒会发生变化

问题描述

我有两个时间戳

starttime = '2020-10-13T13:42:01Z'
endtime = '2020-10-13T13:42:21Z'

当我将其转换为日期时间时,时间戳的秒数会发生变化

timestampstart = pd.to_datetime(starttime, format="%Y-%m-%dT%H:%M:%S%fZ")
timestampend = pd.to_datetime(endtime, format="%Y-%m-%dT%H:%M:%S%fZ")

print(timestampstart,timestampend)
2020-10-13 13:42:00.100000 2020-10-13 13:42:02.100000

我需要的输出是

2020-10-13 13:42:01 2020-10-13 13:42:21

问题是什么?我该如何解决?

标签: pythondatetimetimestamp

解决方案


正如所评论的,您的时间戳是根据ISO8601格式化的。T分隔日期和时间,Z代表“祖鲁时间”,即UTC 。正确的strptime格式代码是

'%Y-%m-%dT%H:%M:%S%z'

请注意,没有小数秒 ( %f),而不是文字Z,您应该使用%z将 Z 转换为 UTC。您还可以使用 Pythondatetime.fromisoformat进行一些调整,例如在这里进行解析。


但是:由于格式是标准化的并且您似乎正在使用pandas,您可以自动解析为例如

import pandas as pd
pd.to_datetime('2020-10-13T13:42:01Z')

Out[3]: Timestamp('2020-10-13 13:42:01+0000', tz='UTC')

推荐阅读