将 timedelta 转换为天、小时和分钟

新手上路,请多包涵

我有一个时间增量。我想要其中的天数、小时数和分钟数——无论是作为元组还是字典……我并不大惊小怪。

这些年来,我一定用十几种语言做了十几次,但 Python 通常对所有事情都有一个简单的答案,所以我想我会先在这里问一下,然后再解决一些令人作呕的简单(但冗长)的数学问题。

福兹先生提出了一个很好的观点。

我正在处理“列表”(有点像 ebay 列表),其中每个列表都有一个持续时间。我试图通过做 when_added + duration - now 找到剩下的时间

我是否正确地说这不会考虑 DST?如果不是,加/减一个小时的最简单方法是什么?

原文由 Oli 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2.2k
2 个回答

如果您有 datetime.timedeltatdtd.days 已经给了您想要的“天数”。 timedelta 值将小数部分保持为秒(而不是直接小时或分钟),因此您确实必须执行“令人作呕的简单数学”,例如:

 def days_hours_minutes(td):
    return td.days, td.seconds//3600, (td.seconds//60)%60

原文由 Alex Martelli 发布,翻译遵循 CC BY-SA 4.0 许可协议

这有点紧凑,你可以在两行中得到小时、分钟和秒。

 days = td.days
hours, remainder = divmod(td.seconds, 3600)
minutes, seconds = divmod(remainder, 60)
# If you want to take into account fractions of a second
seconds += td.microseconds / 1e6

原文由 mberacochea 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题