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

