给出python中的时间增量,例如:
td = datetime.timedelta(minutes=10)
如果以字符串形式打印,它将显示为没有我想要的前导零:
t_str = string(td)
print(t_str)
# result: "0:10:00"
如何将其转换为保留“ 00:10:00”(%HH:%MM:%SS)格式的字符串?
答案 0 :(得分:3)
"{:0>8}".format(str(td))
# result: "00:10:00"
答案 1 :(得分:1)
td = datetime.timedelta(minutes=10)
time = '0'+str(td)
print(time)
输出为
00:10:00
答案 2 :(得分:1)
我们还可以使用time
,然后使用标准strftime
方法进行格式化。
import datetime
dt = datetime.time(0,10,0)
dt.strftime('%H:%M:%S)
答案 3 :(得分:1)
这有点棘手,因为负值以及超过一天的值的行为更加复杂。
def str_td(td):
s = str(td).split(", ", 1)
a = s[-1]
if a[1] == ':':
a = "0" + a
s2 = s[:-1] + [a]
return ", ".join(s2)
print(str_td(datetime.timedelta(minutes=10)))
print(str_td(datetime.timedelta(minutes=3200)))
print(str_td(datetime.timedelta(minutes=-1400)))
print(str_td(datetime.timedelta(seconds=4003.2)))
print(str_td(datetime.timedelta(seconds=86401.1)))
给予
00:10:00
2 days, 05:20:00
-1 day, 00:40:00
01:06:43.200000
1 day, 00:00:01.100000
一种完全不同的方法是
def str_td(td):
s = str(td).split(", ", 1)
t = datetime.time(td.seconds // 3600,td.seconds // 60 % 60,td.seconds % 60, td.microseconds)
s2 = s[:-1] + [str(t)]
return ", ".join(s2)
print(str_td(datetime.timedelta(minutes=10)))
print(str_td(datetime.timedelta(minutes=3200)))
print(str_td(datetime.timedelta(minutes=-1400)))
print(str_td(datetime.timedelta(seconds=4003.2)))
print(str_td(datetime.timedelta(seconds=86401.1)))
给出与上面相同的结果。
哪一种更优雅?留给读者练习。