Positive und negative timedeltas unterschiedlich formatieren, wenn sie in einem String in Python Casting:Format eine negative Timedelta als String mit Zeichen und Stunden, Minuten, Sekunden
import datetime
str(datetime.timedelta(hours=2))
--> '2:00:00'
str(datetime.timedelta(hours=-2))
--> '-1 day, 22:00:00'
Ich würde lieber mag meine negativen timedeltas wie formatiert habe die positiven aber mit einem Negativitätsindikator, wie in -2:00:00
.
Kann dies irgendwie erreicht werden?
edit:
Nach der verknüpften Antwort suchend durch, kam ich mit auf den Punkt:
def timedelta_to_string(timedelta):
total_seconds = timedelta.total_seconds()
if total_seconds < 0:
timedelta_str = '-' + str(datetime.timedelta() - timedelta)
else:
timedelta_str = str(timedelta)
return timedelta_str
Das gibt:
timedelta_to_string(datetime.timedelta(hours=2))
>>> '2:00:00'
timedelta_to_string(datetime.timedelta(hours=-2))
>>> '-2:00:00'
timedelta_to_string(datetime.timedelta(hours=30))
>>>'1 day, 6:00:00'
timedelta_to_string(datetime.timedelta(hours=-30))
>>> '-1 day, 6:00:00'
Having Tage timedeltas gezeigt wird,> 24 Stunden sind gut für mich. Gibt es einen Randfall, den ich vermisse, der mit diesem Ansatz nicht funktionieren würde?
Mögliches Duplikat [Python Timedelta Problem mit negativen Werten] (https://stackoverflow.com/questions/8408397/python-timedelta-issue-with-negative-values) –