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

如何解决Python报错OverflowError: mktime argument out of range?

报错原因

time.mktime() 接收的是本地时区的struct_time对象,转换为对应时间戳时,如果你所处时区早于UTC(比如东八区),1970-01-01 00:00:00 本地时间对应的UTC时间会早于时间戳起始点(UTC 1970-01-01 00:00:00),Windows、32位系统不支持负时间戳,就会触发范围溢出错误。

解决方案

  • 方案1:使用UTC时区转换(推荐)

    如果你要转换的时间本身是UTC时间,改用calendar.timegm()处理,该函数默认按UTC时区计算,不会出现溢出问题:
    import time
    import calendar
    
    begin = calendar.timegm(time.strptime('1970-01-01 00:00:00', '%Y-%m-%d %H:%M:%S'))
    
  • 方案2:使用带时区的datetime转换(Python3.3+支持)

    给datetime对象显式指定UTC时区后调用timestamp()方法:
    from datetime import datetime, timezone
    
    dt = datetime.strptime('1970-01-01 00:00:00', '%Y-%m-%d %H:%M:%S').replace(tzinfo=timezone.utc)
    begin = dt.timestamp()
    
  • 方案3:异常捕获降级处理

    如果需要处理本地时区的时间,无法确定输入范围时,直接捕获溢出异常做降级:
    import time
    
    try:
        begin = time.mktime(time.strptime('1970-01-01 00:00:00', '%Y-%m-%d %H:%M:%S'))
    except OverflowError:
        # 自定义溢出后的处理逻辑,比如设置默认值为0
        begin = 0
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 06:27:03