我正在向csv导出timedeltas列表,这些日子真的搞砸了格式。我试过这个:
while time_list[count] > datetime.timedelta(days = 1):
time_list[count] = (time_list[count] - datetime.timedelta(days = 1)) + datetime.timedelta(hours = 24)
但它会立即转换回数天并创造出无限循环。
答案 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)