我正在尝试返回一个 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.min
和 datetime.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/