将datetime.time转换为秒

时间:2017-06-29 10:48:33

标签: python time

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

4 个答案:

答案 0 :(得分:11)

您可以自己计算:

from datetime import datetime

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

答案 1 :(得分:10)

您需要将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

链接我受到启发:

答案 2 :(得分:4)

如果您的对象应代表持续时间,则应使用datetime.timedelta代替datetime.time

datetime.time objects旨在代表一天中的某个时间。

datetime.timedelta objects用于表示持续时间,并且total_seconds()方法可以完全符合您的要求。

答案 3 :(得分:1)

正如@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。通常这是评论)