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

Python中将Unix时间戳列转换为pandas datetime时差10小时如何解决

问题原因

你的判断完全正确,10小时的时差就是因为处理时丢弃了时间字符串末尾的+1000时区标识导致的。
你拿到的/Date(xxx+1000)/是典型的ASP.NET AJAX序列化时间格式:

  • 括号内加号前的数字是毫秒级Unix时间戳,对应的是UTC时区的时间
  • 加号后的+1000代表数据源展示的时间是UTC+10时区的本地时间
    你之前的代码直接按+分割丢弃了偏移量,只取毫秒值调用pd.to_datetime,函数默认按UTC时区解析,得到的自然是比东十区本地时间晚10小时的UTC时间,和你现在的输出偏差完全吻合。
正确实现

不用手动拆分字符串,直接给pd.to_datetime传入匹配的格式串,就能自动识别时间戳和时区偏移,代码更简洁也不会出时区偏差:

import pandas as pd

df = pd.DataFrame({      
    'Time' : ['/Date(1642687260000+1000)/','/Date(1642688100000+1000)/'],
})

# 按序列化格式直接解析,自动处理时区偏移
df['Time'] = pd.to_datetime(df['Time'], format='/Date(%Q%z)/')
# 转换为东十区本地时间,去除时区标记,和数据源展示结果完全一致
df['Time'] = df['Time'].dt.tz_convert('+10:00').dt.tz_localize(None)

运行后输出和数据源给出的正确时间完全匹配:

Time
0 2022-01-21 00:01:00
1 2022-01-21 00:15:00
格式参数说明
  • %Q:pandas专门用来匹配毫秒级Unix时间戳的占位符
  • %z:用来匹配±HHMM格式的时区偏移标识,会自动把时差计算到最终时间结果里
    这种写法兼容所有同格式的带时区偏移时间串,后续如果数据源换了其他时区(比如+0800、-0500)也不需要修改代码,比手动拆分字符串鲁棒性强很多。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.18 16:15:42