我正在尝试返回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
答案 0 :(得分:1)
您可以使用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)