在 python 中将时间 (HH:MM:SS) 转换为分钟

新手上路,请多包涵

如何转换 HH:MM:SS 到 分钟?

我在下面试过效果很好:

   import datetime as DT
  t1 = DT.datetime.strptime('0:10:00', '%H:%M:%S')

我尝试了另一个例子并得到错误:

   import datetime as DT
  t1 = DT.datetime.strptime('9715:56:46', '%H:%M:%S')

错误:

   ValueError: time data '9715:56:46' does not match format '%H:%M:%S'

在这个例子中它支持 Max 23 for %H,如果我的小时数超过 23(在这种情况下我有 9715 小时)如何得到它?

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

阅读 876
2 个回答

您可以将 sum 与生成器表达式或 map 一起使用:

 from operator import mul

my_time = '9715:56:46'
factors = (60, 1, 1/60)

t1 = sum(i*j for i, j in zip(map(int, my_time.split(':')), factors))
t2 = sum(map(mul, map(int, my_time.split(':')), factors))

print(t1)  # 582956.7666666667

assert t1 == t2

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

datetime.datetime 表示时间点,而不是持续时间。

datetime.timedelta 表示时间长度。观察:

 from datetime import timedelta

delta = timedelta(hours=9715, minutes=56, seconds=46)
total_seconds = delta.total_seconds()
minutes = int(total_seconds // 60)
seconds = int(total_seconds % 60)

print('{minutes}:{seconds}'.format(minutes=minutes, seconds=seconds))

编辑:我更改了代码以使用 python 2.7。

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

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