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
相关产品推荐
相关产品推荐

