Python 从T和Z转换为datetime时,时间戳秒数会发生变化

Python 从T和Z转换为datetime时,时间戳秒数会发生变化,python,datetime,timestamp,Python,Datetime,Timestamp,我有两个时间戳 starttime = '2020-10-13T13:42:01Z' endtime = '2020-10-13T13:42:21Z' 当我将其转换为datetime时,时间戳的秒数会发生变化 timestampstart = pd.to_datetime(starttime, format="%Y-%m-%dT%H:%M:%S%fZ") timestampend = pd.to_datetime(endtime, format="%Y-%m-%d

我有两个时间戳

starttime = '2020-10-13T13:42:01Z'
endtime = '2020-10-13T13:42:21Z'
当我将其转换为datetime时,时间戳的秒数会发生变化

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
有什么问题?
我该如何处理它呢?

如前所述,您的时间戳的格式取决于。
T
分隔日期和时间,
Z
代表“祖鲁时间”,即UTC。正确的
strtime
格式代码为

'%Y-%m-%dT%H:%M:%S%z'
请注意,没有小数秒(
%f
),您应该使用
%Z
将Z转换为UTC,而不是文字
Z
。您还可以使用Python
datetime.fromisoformat
进行解析,只需稍加调整,请参见例如


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

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

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

输入字符串中没有小数秒
%f
。通常,您不需要在此处指定
格式。格式非常标准,ISO8601。所以我必须转换为datetime而不提及格式?是的,在这里您可以转换为datetime,只需使用
pd.to_datetime(starttime)