2016-07-21 4 views
1

Я пытаюсь вернуть timedelta, но когда time_value слишком велико, он переполняется и дает ошибку. Я могу использовать проверку, чтобы увидеть, слишком ли велика величина time_value, но я бы предпочел, чтобы обертка обрабатывала ошибку и возвращала значение по умолчанию. Я включил код для того, что я делаю прямо сейчас. Есть ли версия timedelta или datetime, которая сделает это для меня?python Timedelta overflow

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

Вы можете использовать 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) 
Смежные вопросы