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

使用pd.to_datetime与datetime.fromtimestamp解析Unix时间戳结果不同,哪个正确?

Unix时间戳解析:两种方法结果不同的原因

我尝试用pd.to_datetime()和dt.datetime.fromtimestamp()解析同一个Unix时间戳,但输出结果不一样,请问哪种方式是正确的?代码示例如下:

import datetime as dt
import pandas as pd

ts = 1674853200000
print(pd.to_datetime(ts, unit='ms'))
print(dt.datetime.fromtimestamp(ts / 1e3))

>> 2023-01-27 21:00:00
>> 2023-01-27 13:00:00

核心原因:时区差异

两种解析方式本身都没问题,结果不同完全是因为时区处理逻辑不一样:

  • pd.to_datetime()默认把时间戳解析成UTC标准时间(只要你没指定其他时区)
  • dt.datetime.fromtimestamp()会自动转换成你运行代码的本地系统时区的时间

看你的输出,UTC时间21:00减去8小时就是13:00,说明你的本地时区是UTC-8(比如美国太平洋时区),两者的时间其实是同一个时刻,只是时区不同而已。

让结果统一的两种方法

  1. 让pandas输出本地时区时间:
# 先解析为UTC,再转换到你的本地时区(这里以UTC-8为例)
print(pd.to_datetime(ts, unit='ms').tz_localize('UTC').tz_convert('America/Los_Angeles'))
  1. 让datetime输出UTC时间:
print(dt.datetime.utcfromtimestamp(ts / 1e3))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 13:05:21