【问题标题】:Python: TimeDelta how to show only minutes and secondsPython:TimeDelta 如何只显示分钟和秒
【发布时间】:2023-02-16 20:39:06
【问题描述】:

我有以下代码:

if (len(circles[0, :])) == 5:
            start = time.time()

        if (len(circles[0, :])) == 1:
            end = time.time()

            print(str(timedelta(seconds=end-start)))

这是输出:

0:01:03.681325

这是我希望实现的输出:

1:03

【问题讨论】:

  • 也许使用\b转义序列?
  • 你能给我们更多的调试细节吗?我无法测试代码。
  • 似乎 timedelta.__format__ 是该类型的一个很好的补充。
  • 这回答了你的问题了吗? Format timedelta to string
  • import time from datetime import timedelta start = time.time() time.sleep(3.681325) end = time.time() print(str(timedelta(seconds=end-start))) 您可以使用此代码自己尝试。 ..不幸的是,我还没有找到解决方案

标签: python time format string-formatting


【解决方案1】:

如果您仅依赖 timedelta 对象的默认字符串表示形式,您将获得该格式。相反,您必须指定自己的格式:

from datetime import timedelta

def convert_delta(dlt: timedelta) -> str:
    minutes, seconds = divmod(int(dlt.total_seconds()), 60)
    return f"{minutes}:{seconds:02}"

# this is your time from your code
dlt = timedelta(minutes=1, seconds=3, milliseconds=681.325)

print(convert_delta(dlt))

有了这个你就得到了这个输出:

1:03

【讨论】:

  • 不幸的是,这将不起作用,因为我正在为该程序使用实时数据。我无法将时间输入代码,因为它每次都在变化
  • @Ethan0619 这只是一个如何使用最少的代码示例进行计算的示例。我只是转换了代码,使转换成为一种方法。您可以将 convert_delta 方法放入您的代码中,并使用您的增量调用它并打印结果。
【解决方案2】:

根据 wkl 的回答,您可以使用 int(input()) 输入分钟、秒,使用 float(input()) 输入毫秒。

【讨论】:

    【解决方案3】:

    简单地打印一段字符串怎么样?例如:

    td_str = str(timedelta(seconds=end-start))
    
    if td_str[2] == '0':
        print(f'{td_str[3:7]}')
    else:
        print(f'{td_str[2:7]}')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-25
      • 2012-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多