【问题标题】:Convert datetime.time to seconds将 datetime.time 转换为秒
【发布时间】:2017-12-03 00:48:00
【问题描述】:

我有一个datetime.time 类型的对象。如何将其转换为以秒为单位表示其持续时间的 int?还是字符串,然后我可以通过拆分将其转换为第二种表示形式?

【问题讨论】:

  • Duration 假设您有两个 datetime.time 对象并且它们之间的差异是秒。您是否要计算两个 datetime.time 对象之间的秒差?

标签: python time


【解决方案1】:

你可以自己计算:

from datetime import datetime

t = datetime.now().time()
seconds = (t.hour * 60 + t.minute) * 60 + t.second

【讨论】:

    【解决方案2】:

    您需要将datetime.time 对象转换为datetime.timedelta 才能使用total_seconds() 函数。

    它将返回 float 而不是问题中所要求的 int,但您可以轻松地转换它。

    >>> from datetime import datetime, date, time, timedelta
    >>> timeobj = time(12, 45)
    >>> t = datetime.combine(date.min, timeobj) - datetime.min
    >>> isinstance(t, timedelta)
    # True
    >>> t.total_seconds()
    45900.0
    

    我受到启发的链接:

    【讨论】:

      【解决方案3】:

      如果您的对象应该代表一个持续时间,您应该使用datetime.timedelta 而不是datetime.time

      datetime.time objects 表示一天中的某个时间。

      datetime.timedelta objects 用于表示持续时间,并且有一个 total_seconds() 方法可以完全满足您的需求。

      【讨论】:

      • 简洁易懂的解释!
      【解决方案4】:

      正如@Owl Max 提出的,使用整数表示时间的最简单方法是使用 timedelta。不过,我想分享一种不同的方式来构建 timedelta。

      我喜欢使用的一个有用的单线是:

      import datetime
      t = datetime.time(10, 0, 5)
      int(datetime.timedelta(hours=t.hour, minutes=t.minute, seconds=t.second).total_seconds())
      

      (ps。通常这是一条评论)

      【讨论】:

        猜你喜欢
        • 2012-12-27
        • 2016-05-16
        • 2021-04-24
        • 2020-09-05
        • 1970-01-01
        • 2015-03-01
        • 2011-03-11
        • 1970-01-01
        相关资源
        最近更新 更多