【问题标题】:Python format timedelta greater than 24 hours for display only containing hours?Python 格式 timedelta 大于 24 小时以显示仅包含小时?
【发布时间】:2015-12-07 13:39:57
【问题描述】:

如何格式化大于 24 小时的 timedelta 以在 Python 中仅显示小时?

>>> import datetime
>>> td = datetime.timedelta(hours=36, minutes=10, seconds=10)
>>> str(td)
'1 day, 12:10:10'

# my expected result is:
'36:10:10'

我做到了:

import datetime

td = datetime.timedelta(hours=36, minutes=10, seconds=10)
seconds = td.total_seconds()
hours = seconds // 3600
minutes = (seconds % 3600) // 60
seconds = seconds % 60

str = '{}:{}:{}'.format(int(hours), int(minutes), int(seconds))

>>> print(str)
36:10:10

有没有更好的办法?

【问题讨论】:

  • 我觉得这已经够干净了,你为什么不用时间戳
  • @Sinux 因为我对时间对象做了一些计算 (+, -)。
  • 如果我想从以下命令中删除日期: td = datetime.timedelta(hours= h,hours = m,hours = s) 以获得以下结果 12:10:10而不是:“1 天,12:10:10”有人会怎么做?!

标签: python timedelta


【解决方案1】:

可能定义继承datetime.timedelta 的类会更优雅一些

class mytimedelta(datetime.timedelta):
   def __str__(self):
      seconds = self.total_seconds()
         hours = seconds // 3600
         minutes = (seconds % 3600) // 60
         seconds = seconds % 60
         str = '{}:{}:{}'.format(int(hours), int(minutes), int(seconds))
         return (str)

td = mytimedelta(hours=36, minutes=10, seconds=10)

>>> str(td)
prints '36:10:10'

【讨论】:

    【解决方案2】:
    td = datetime.timedelta(hours=36, minutes=10, seconds=10)
    seconds = td.total_seconds()
    result = '%d:%02d:%02d' % (seconds / 3600, seconds / 60 % 60, seconds % 60)
    

    【讨论】:

      【解决方案3】:
      from datetime import timedelta
      from babel.dates import format_timedelta
      delta = timedelta(days=6)
      format_timedelta(delta, locale='en_US')
      u'1 week'
      

      更多信息:http://babel.pocoo.org/docs/dates/

      这将根据给定的语言环境格式化您的间隔。我想这更好,因为它将始终使用您所在地区的官方格式。

      哦,它有一个粒度参数。 (希望我能理解你的问题……)

      【讨论】:

        猜你喜欢
        • 2011-03-31
        • 2023-03-07
        • 2021-05-28
        • 2023-03-20
        • 1970-01-01
        • 2017-02-03
        • 2020-02-13
        • 1970-01-01
        • 2018-11-15
        相关资源
        最近更新 更多