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

Python 3.5 Windows下utcfromtimestamp处理1970年前日期问题

解决Windows下Python 3.5处理负时间戳的问题

我太懂这个坑了——在Windows系统上用Python 3.5时,datetime.datetime.utcfromtimestamp(t)确实搞不定1970年1月1日之前的负时间戳,这是当时Python版本在Windows平台的已知限制,不是你代码逻辑的问题。

给你几个实用的替代方案:

  • 直接基于基准日期计算:既然你已经能通过datetime(1970, 1, 1)算出正确的timedelta,那完全可以跳过时间戳转换,直接用基准日期加时间差得到目标日期:

    from datetime import datetime, timedelta
    
    base_date = datetime(1970, 1, 1)
    delta = timedelta(seconds=t)  # t是你的负时间戳数值
    target_date = base_date + delta
    

    这个方法完全不受系统和版本限制,和你原本的计算逻辑也一致,改动最小。

  • 升级Python版本:如果项目允许的话,把Python升到3.6及以上,这个负时间戳的问题在后续版本里已经被修复了,utcfromtimestamp就能正常用了。

  • 借助第三方日期库:比如arrow或者pendulum,这类库对跨平台日期兼容性处理得更完善,处理1970年前的日期毫无压力:

    import arrow
    target_date = arrow.get(t).datetime
    

你可以根据项目实际情况选最适合的方案,个人更推荐第一种,毕竟和你现有的代码逻辑衔接最顺畅。

内容的提问来源于stack exchange,提问作者LATNI El Mehdi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:09:56