python Timedelta溢出

标签 python python-2.7 integer-overflow timedelta

我正在尝试返回一个 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

最佳答案

你可以使用 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)

关于python Timedelta溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38514856/

相关文章:

Python - isinstance 返回 false

python - 某些系统上pywinauto引起的Py2Exe错误: "AttributeError: ' module' object has no attribute 'CUIAutomation"

在两个大整数相乘期间捕获并计算溢出

python - 将二维数组中任意行的值赋给 nans

python - 使用 Python 规范化空格

python-2.7 - Python Dask-2个DataFrame的垂直串联

c++ - 剩余时间测量的 std::chrono::duration 溢出

c++ - OS X 程序集中的 Zerofill 大小溢出

python - 为什么 Django 不为应用程序提供 urls.py 文件?

python - 如何使用 Pandas 列解析网络中的文本?