如何以小时显示timedelta:min:sec?

时间:2015-02-13 16:10:59

标签: python csv timedelta

我正在向csv导出timedeltas列表,这些日子真的搞砸了格式。我试过这个:

 while time_list[count] > datetime.timedelta(days = 1):
        time_list[count] = (time_list[count] - datetime.timedelta(days =  1)) + datetime.timedelta(hours = 24)

但它会立即转换回数天并创造出无限循环。

1 个答案:

答案 0 :(得分:9)

默认情况下,str()的{​​{1}}转换始终包含timedelta部分。在内部,值总是标准化为天,秒和微秒,没有必要尝试转换'几天到几小时,因为没有跟踪单独的小时组件。

如果您想以不同方式格式化days对象,可以手动轻松完成:

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)