2016-07-21 11 views
1

Ich versuche, ein Timedelta zurückzugeben, aber wenn time_value zu groß ist, überläuft es und gibt einen Fehler. Ich kann eine Überprüfung verwenden, um zu sehen, ob time_value zu groß ist, aber ich würde einen Wrapper bevorzugen, der den Fehler behandelt und einen Standard zurückgibt. Ich habe den Code für das, was ich gerade mache, eingefügt. Gibt es eine Version von Timedelta oder Datetime, die das für mich tun?Python TimeDelta-Überlauf

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 

Antwort

0

könnten Sie datetime.timedelta.min und datetime.timedelta.max verwenden. Beachten Sie, dass diese beiden symmetrisch sind nicht etwa 0.

Dann Code

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