You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用pandas to_datetime转换字符串为Datetime时如何保留原始时间?

解决pandas转换带时区字符串时时间偏移的问题

嘿,这个问题我之前也碰到过!咱们先搞清楚为啥会出现时间增加5小时的情况:

你的时间字符串"2016-09-21 08:56:29-05:00"里包含了时区偏移信息(-05:00,表示比UTC时间晚5小时),但你调用pd.to_datetime时指定的format='%Y-%m-%d %H:%M:%S'并没有包含时区的格式符,所以pandas会忽略这个偏移信息,自动把解析后的时间转换为UTC时间——也就是把原时间加上5小时,这就导致最终结果和你想要的原始时间不一致了。

下面给你两种可行的解决方案:

方案一:正确解析时区信息,按需保留本地时间

这种方法会先完整解析带时区的时间,之后可以选择保留时区或者转换成无时区的本地时间:

import pandas as pd
# 解析时加入时区格式符%z,正确识别偏移信息
t = pd.to_datetime("2016-09-21 08:56:29-05:00", format='%Y-%m-%d %H:%M:%S%z')
print(t)
# 输出:Timestamp('2016-09-21 08:56:29-0500', tz='pytz.FixedOffset(-300)')

# 如果需要去掉时区信息,保留原始的本地时间
t_local = t.tz_localize(None)
print(t_local)
# 输出:Timestamp('2016-09-21 08:56:29')

方案二:直接截取不带时区的字符串部分转换

如果你确定不需要时区信息,也可以直接截取字符串中前19位(也就是不带-05:00的部分)再转换:

import pandas as pd
time_str = "2016-09-21 08:56:29-05:00"
# 截取到时区偏移前的部分
t = pd.to_datetime(time_str[:-6], format='%Y-%m-%d %H:%M:%S')
print(t)
# 输出:Timestamp('2016-09-21 08:56:29')

内容的提问来源于stack exchange,提问作者EJSuh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:38:21