关于python:将datetime.time转换为秒

Convert datetime.time to seconds

本问题已经有最佳答案,请猛点这里访问。

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


您可以自己计算:

1
2
3
4
from datetime import datetime

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

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

它将返回一个float,而不是问题中所问的int,但您可以轻松地进行强制转换。

1
2
3
4
5
6
7
>>> 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

我灵感来源于以下链接:

  • 关于datetime.combine的问题
  • 所以关于将datetime.time转换为datetime.timedelta的问题


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

datetime.time对象用于表示一天中的某个时间。

datetime.timedelta对象是用来表示持续时间的,并且有一个total_seconds()方法可以完全满足您的需要。


正如@owl max所提议的,拥有时间整数表示的最简单方法是使用时间增量。尽管如此,我还是想分享一种不同的方法来构建TimeDelta。

我喜欢使用的一个有用的一行程序是:

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

(注:通常这是一个评论)