将负时间增量格式化为带符号和小时、分钟、秒的字符串
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 模块,您可能会发现它很有用。
在 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 模块,您可能会发现它很有用。