将负时间格式设置为带符号和小时,分钟,秒的字符串

时间:2017-08-21 12:45:48

标签: python timedelta

在Python中将它们转换为字符串时,正面和负面timedeltas的格式不同:

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'

为timedeltas显示天数&gt; 24小时对我没问题。 是否有任何我不知道的边缘情况不适合这种方法?

1 个答案:

答案 0 :(得分:1)

我似乎找不到我发现它的StackOverflow帖子,但是github上有一个可读的模块,你可能觉得它很有用。

https://github.com/wimglenn/readabledelta