Python 如何以小时:分钟:秒为单位显示时间增量?

Python 如何以小时:分钟:秒为单位显示时间增量?,python,csv,timedelta,Python,Csv,Timedelta,我正在将一个时间增量列表导出到csv,这几天真的弄乱了格式。我试过这个: while time_list[count] > datetime.timedelta(days = 1): time_list[count] = (time_list[count] - datetime.timedelta(days = 1)) + datetime.timedelta(hours = 24) 但它会立即转换回天数,并创建一个无限循环 默认情况下,str()时间增量的转换将始终

我正在将一个时间增量列表导出到csv,这几天真的弄乱了格式。我试过这个:

 while time_list[count] > datetime.timedelta(days = 1):
        time_list[count] = (time_list[count] - datetime.timedelta(days =  1)) + datetime.timedelta(hours = 24)
但它会立即转换回天数,并创建一个无限循环

默认情况下,
str()
时间增量的转换将始终包括
部分。在内部,该值始终标准化为天数、秒数和微秒数,尝试将天“转换”为小时没有意义,因为没有跟踪单独的小时分量

如果要以不同的方式格式化
timedelta()
对象,可以轻松手动执行此操作:

def format_timedelta(td):
    minutes, seconds = divmod(td.seconds + td.days * 86400, 60)
    hours, minutes = divmod(minutes, 60)
    return '{:d}:{:02d}:{:02d}'.format(hours, minutes, seconds)
这忽略了任何微秒部分,但添加了以下内容:

return '{:d}:{:02d}:{:02d}.{:06d}'.format(hours, minutes, seconds, td.microseconds)
演示:


谢谢我想这就是我想快速跟进的答案,我正在对新的时间增量列表进行排序,排序函数似乎只查看小时内的第一个数字:例如3:40:27 3:58:46 4:14:34 683:51:5 71:54:20 72:22:4 73:19:15 740:36:36 7:14:46有什么办法吗?@John:先排序,然后转换为字符串。字符串总是按字典顺序排序。@Martijn-Doh!为什么我以前从来不知道divmod()?我已经使用python大概8年了,我不记得曾经见过它。如果
td
是非负的:
minutes,seconds=divmod(td.seconds,60);小时,分钟=divmod(分钟,60);小时+=d.days*24
您可以使用
td.microseconds
四舍五入到最接近的秒。
>>> format_timedelta(timedelta(days=2, hours=10, minutes=20, seconds=3))
'58:20:03'
>>> format_timedelta(timedelta(hours=10, minutes=20, seconds=3))
'10:20:03'