質問者は、通常よりも優れた形式を望んでいます。
>>> import datetime
>>> datetime.timedelta(seconds=41000)
datetime.timedelta(0, 41000)
>>> str(datetime.timedelta(seconds=41000))
'11:23:20'
>>> str(datetime.timedelta(seconds=4102.33))
'1:08:22.330000'
>>> str(datetime.timedelta(seconds=413302.33))
'4 days, 18:48:22.330000'
したがって、実際には 2 つの形式があります。1 つは日が 0 で省略されているもので、もう 1 つは "n days, h:m:s" というテキストがあるものです。ただし、秒には分数が含まれる場合があり、印刷出力に先行ゼロがないため、列が乱雑になります。
あなたがそれを好むなら、これが私のルーチンです:
def printNiceTimeDelta(stime, etime):
delay = datetime.timedelta(seconds=(etime - stime))
if (delay.days > 0):
out = str(delay).replace(" days, ", ":")
else:
out = "0:" + str(delay)
outAr = out.split(':')
outAr = ["%02d" % (int(float(x))) for x in outAr]
out = ":".join(outAr)
return out
これにより、出力が dd:hh:mm:ss 形式で返されます。
00:00:00:15
00:00:00:19
02:01:31:40
02:01:32:22
これに年を追加することも考えましたが、出力は 1 年以上安全であるため、これは読者の演習として残されています。
>>> str(datetime.timedelta(seconds=99999999))
'1157 days, 9:46:39'