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

UNIX格式int64时间戳转datetime始终返回1970年问题咨询

问题根因

你输入的测试时间戳1545003901为秒级UNIX时间戳,对应真实时间为2018-12-17 01:05:01。你当前代码设置unit='ms',会将输入数值按照毫秒单位计算,1545003901毫秒仅等于1545003.9秒,距离UNIX元年(1970-01-01)仅17天,因此输出1970年附近的错误时间。

无效操作说明
  • 你额外添加的format='%Y/%m/%d %H:%M:%S'参数对数值型时间戳完全不生效,该参数仅用于解析字符串格式的时间输入,添加后不会产生任何作用。
  • 若你曾调整unit='s'后仍得到错误结果,优先排查是否未重新执行全量代码、是否存在缓存问题。
修复代码

正确时间转换逻辑

# 单位改为秒s即可匹配输入的时间戳量级
weather['time_stamp'] = pd.to_datetime(weather['time_stamp'], origin='unix', unit='s')

冗余代码优化

你后续提取年、月、日、时、分的写法可直接用datetime列的dt属性,不需要用lambda遍历,效率更高:

weather['year'] = weather['time_stamp'].dt.year
weather['month'] = weather['time_stamp'].dt.month
weather['day'] = weather['time_stamp'].dt.day
weather['hour'] = weather['time_stamp'].dt.hour
weather['minute'] = weather['time_stamp'].dt.minute

语法错误修复

你最后一行抽样代码缺了右括号,修正后为:

weather.take(np.random.permutation(len(weather))[:15])
异常排查方案

如果调整单位后仍存在转换错误,按以下步骤排查:

  • 单独执行测试用例验证转换逻辑:pd.to_datetime(1545003901, origin='unix', unit='s'),正常输出应为2018-12-17 01:05:01
  • 检查weather['time_stamp']列的取值范围,确认所有值都是10位左右的秒级时间戳,无13位毫秒值、空值、异常小值混入
  • 检查列的数据类型是否为纯int64数值型,无字符串、特殊字符等脏数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 10:36:03