【问题标题】:python Timedelta overflowpython Timedelta溢出
【发布时间】:2016-07-21 21:43:22
【问题描述】:

我试图返回一个 timedelta,但是当 time_value 太大时它会溢出并给出错误。我可以使用检查来查看 time_value 是否太大,但我更喜欢处理错误并返回默认值的包装器。我已经包含了我现在正在做的事情的代码。是否有可以为我执行此操作的 timedelta 或 datetime 版本?

def time_format(time_value):
            try:
                if time_value is None:
                    return 0
                elif time_value > 0:
                    return (timedelta(seconds=-time_value))
            except OverflowError:
                return 0

【问题讨论】:

    标签: python python-2.7 integer-overflow timedelta


    【解决方案1】:

    您可以使用datetime.timedelta.mindatetime.timedelta.max。注意这两个不是关于 0 对称的。

    那么你的代码就变成了

    time_offset = 0
    if timedelta.min.total_seconds() <= -time_value <= timedelta.max.total_seconds():
        time_offset = timedelta(seconds=-time_value)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-07
      • 1970-01-01
      • 2022-01-21
      • 1970-01-01
      • 2021-11-26
      • 1970-01-01
      • 2010-10-13
      • 2014-05-06
      相关资源
      最近更新 更多