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
。您还可以使用Pythondatetime.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)
。