我有一个3465小时的timedelta对象
timedelta(hours=3457)
我想以“HH:MM”格式表示它,即“3457:00”
我做:
from datetime import datetime
hours = timedelta(hours=3457)
hours_string = time.strftime("%H:%M", time.gmtime(hours.seconds))
print hours_string
"01:00"
我怎样才能得到“3457:00”?
答案 0 :(得分:5)
请注意,3457:00是一种荒谬的格式。 “小时 - 冒号 - 分钟”格式用于日期和时间,然后小时不能合理地高于23.更合理的格式是:3457h 0m。
你可以这样:
from datetime import timedelta
delta = timedelta(hours=3457)
minutes, seconds = divmod(delta.seconds, 60)
hours, minutes = divmod(minutes, 60)
hours += delta.days * 24
print '%sh %sm' % (hours, minutes)
当然,更简单的方法是:
from datetime import timedelta
delta = timedelta(hours=3457)
print delta
但这会给你“144天,1:00:00”,这是一种理智的格式,但不是你想要的。
答案 1 :(得分:0)
正如timedelta文档说明,只有天,秒和微秒存储在内部 - 这意味着你将必须手动将它们转换为您想要的单位(小时和分钟)。这是一种方法:
from datetime import timedelta
d = timedelta(hours=3457, minutes=42)
wholehours, seconds = divmod(d.seconds, 60*60)
wholeminutes = seconds//60
deltahours = d.days*24 + wholehours
print('{:d}:{:02d}'.format(deltahours, wholeminutes))
# 3457:42
这是一个更简单的替代方案,可以产生相同的结果:
def deltatime_hours_mins(dt, sep=':'):
secs = int(dt.total_seconds())
return '{:d}{}{:02d}'.format(secs//3600, sep, secs//60 % 60)
print(deltatime_hours_mins(d))