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

Python 3中无法将Epoch值-2208988800000转换为可读日期

解决Python转换Epoch时间到1900年日期时的OSError问题

嘿,这个问题我之前也碰到过!根源在于datetime.fromtimestamp()依赖操作系统的时间支持范围——很多系统(比如Windows或部分Unix环境)不处理1970年1月1日(Unix纪元起点)之前的日期,所以才会抛出OSError: [Errno 22] Invalid argument。

快速解决:用UTC时间转换方法

试试换成datetime.datetime.utcfromtimestamp(),它不依赖本地系统的时间范围限制,直接基于UTC计算,能正确解析早于1970年的日期:

import datetime
# 先把毫秒转成秒
epoch_seconds = -2208988800000 / 1000
dt = datetime.datetime.utcfromtimestamp(epoch_seconds)
print(dt.strftime('%d/%b/%Y'))  # 输出:01/Jan/1900

更灵活的方案:用第三方日期库

如果需要处理更多历史日期或者复杂的时间操作,推荐用arrow或者python-dateutil这类专门的日期库,它们对早于Unix纪元的日期支持更完善:
比如用python-dateutil(需要先安装:pip install python-dateutil):

from datetime import datetime
from dateutil.tz import tzutc

epoch_seconds = -2208988800000 / 1000
dt = datetime.fromtimestamp(epoch_seconds, tzutc())
print(dt.strftime('%d/%b/%Y'))  # 输出:01/Jan/1900

或者用arrow(安装:pip install arrow):

import arrow
dt = arrow.get(-2208988800000 / 1000).format('DD/MMM/YYYY')
print(dt)  # 输出:01/Jan/1900

为啥在线工具能成功?

在线工具一般不会用系统原生的时间处理函数,而是自己实现了独立的日期计算逻辑,所以能覆盖更广泛的时间范围,包括Unix纪元之前的日期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:09:49