将负时间增量格式化为带符号和小时、分钟、秒的字符串

Format a negative timedelta as string with sign and hours, minutes, seconds

在 Python 中将正负时间增量转换为字符串时,它们的格式不同:

import datetime

str(datetime.timedelta(hours=2))    
--> '2:00:00'

str(datetime.timedelta(hours=-2))    
--> '-1 day, 22:00:00'

我希望我的负时间增量像正时间增量一样格式化,但带有负指标,如 -2:00:00

这能以某种方式实现吗?

编辑:

看完链接的答案后,我想到了这个:

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

这给出:

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'

显示时间增量 > 24 小时的天数对我来说没问题。 是否有任何我遗漏的边缘情况不适用于此方法?

我似乎找不到我找到它的 Whosebug post,但是 github 上有一个 readabledelta 模块,您可能会发现它很有用。

https://github.com/wimglenn/readabledelta