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

为何Python datetime与pandas to_datetime转换同一时间戳结果不同?

为什么两种时间戳转换方法结果有8小时差异?

这个差异的核心原因是两个方法默认使用的时区不同,具体拆解如下:

  • 对于 pd.to_datetime(1523808011.979, unit='s'):
    pandas 默认将Unix时间戳(以秒为单位)解析为UTC时区的时间,返回的是不带时区标记的Timestamp对象(naive timestamp)。你得到的2018-04-15 16:00:11.979000其实是UTC标准时间。

  • 对于 dt.datetime.fromtimestamp(1523808011.979).isoformat():
    Python标准库的datetime.fromtimestamp()默认会用你的本地系统时区解析时间戳。从结果反推,你的系统时区应该是东八区(UTC+8)——把UTC时间16:00加上8小时,就得到了次日的00:00:11.979,也就是2018-04-16T00:00:11.979000。

验证&统一结果的方法

如果想让两个方法返回一致的结果,可以做如下调整:

  1. 让pandas适配本地时区解析:
import pandas as pd
# 先解析为UTC,再转换到东八区(以上海时区为例)
pd.to_datetime(1523808011.979, unit='s').tz_localize('UTC').tz_convert('Asia/Shanghai')
# 结果会是 Timestamp('2018-04-16 00:00:11.979000+0800', tz='Asia/Shanghai')
  1. 让datetime用UTC时区解析:
import datetime as dt
dt.datetime.utcfromtimestamp(1523808011.979).isoformat()
# 结果会是 '2018-04-15T16:00:11.979000',和pandas初始结果一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:22:04