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

Python中strftime、gmtime转换时间戳结果错误,datetime模块报年份超出范围的问题

Python中strftime、gmtime转换时间戳结果错误,datetime模块报年份超出范围的问题

嗨,我一眼就瞅出问题所在啦!你用的这个时间戳是毫秒级的,但Python里time和datetime模块的默认方法都是处理秒级时间戳的,这就是为啥会得到离谱的5万多年份,甚至直接报错年份超出范围~

问题根源

你的时间戳1569332262000后面多了三个0,是毫秒数。而time.gmtime()、datetime.fromtimestamp()这些函数,默认要求传入的是以秒为单位的时间戳。直接传毫秒的话,相当于把时间往后推了1000倍,年份自然就跑到5万多年后,超出Python日期模块的处理范围,报错也就在情理之中了。

修复方法很简单,把时间戳转成秒级就行:

1. 用time模块的修复代码

import time

epoch_time = 1569332262000
# 把毫秒转成秒,转成浮点数或整数都可以
epoch_seconds = epoch_time / 1000
print(time.strftime('%Y-%m-%d %H:%M:%S', time.gmtime(epoch_seconds)))

运行后就能得到和你截图里一致的正确结果:2019-09-24 10:17:42

2. 用datetime模块的修复代码

from datetime import datetime

epoch_time = 1569332262000
epoch_seconds = epoch_time / 1000

# 如果你要本地时间,用这个
local_value = datetime.fromtimestamp(epoch_seconds)
print(f"本地时间:{local_value:%Y-%m-%d %H:%M:%S}")

# 如果要和截图一致的UTC时间,用这个
utc_value = datetime.utcfromtimestamp(epoch_seconds)
print(f"UTC时间:{utc_value:%Y-%m-%d %H:%M:%S}")

这样就不会再报ValueError: year 51700 is out of range的错误了,结果完全符合预期。

小提示

现在很多前端工具、API返回的时间戳都是毫秒级的,以后遇到时间转换异常,先检查下时间戳的单位是秒还是毫秒,差三个0结果可是天差地别哦😉

备注:内容来源于stack exchange,提问作者Zeeshan Anjum

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 11:03:07