【问题标题】:How to convert float into Hours Minutes Seconds?如何将浮点数转换为时分秒?
【发布时间】:2019-01-21 14:43:18
【问题描述】:

我有浮点值,我正在尝试将它们转换为 Hours:Min:Seconds 但我失败了。我关注了以下帖子:

Converting a float to hh:mm format

例如我有一个浮点格式的值:

time=0.6 

result = '{0:02.0f}:{1:02.0f}'.format(*divmod(time * 60, 60))

它给了我输出:

00:36 

但实际上它应该像“00:00:36”。我如何得到这个?

【问题讨论】:

  • 显示带有预期输出的实际输入。现在,另一个问题与您想要的完全无关(尽管这是一个很好的起点)。目前还不清楚您打算如何将浮点数格式化为 HH:MM:SS。
  • 转换的方法有很多种,但真正取决于float值的含义。通常的标准是该值是一天中时间的分数。但是您的示例暗示该值是一分钟的一小部分。是哪个,还是有别的意思?
  • 我也给出了例子
  • 它的时间分数。比如 0.6 意味着 36 秒
  • 您可以查看我的单行答案here,它为您提供了 00:00:36 格式,而无需自己执行正则表达式字符串格式化。

标签: python time floating


【解决方案1】:

您可以使用 datetime 模块:

import datetime
time = 0.6
result = str(datetime.timedelta(minutes=time))

【讨论】:

    【解决方案2】:

    您无法从任何地方获取小时数,因此您首先需要提取小时数,即:

    float_time = 0.6  # in minutes
    hours, seconds = divmod(float_time * 60, 3600)  # split to hours and seconds
    minutes, seconds = divmod(seconds, 60)  # split the seconds to minutes and seconds
    

    然后你可以处理格式,即:

    result = "{:02.0f}:{:02.0f}:{:02.0f}".format(hours, minutes, seconds)
    # 00:00:36
    

    【讨论】:

      【解决方案3】:

      Divmod 函数只接受两个参数,因此您可以得到两个参数中的任何一个 Divmod()

      所以你可以尝试这样做:

      time = 0.6
      mon, sec = divmod(time, 60)
      hr, mon = divmod(mon, 60)
      print "%d:%02d:%02d" % (hr, mon, sec)
      

      【讨论】:

      • 不错的解决方案,但我认为使用@weakit 建议的日期时间是这里更清洁的解决方案。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-11
      相关资源
      最近更新 更多