将datetime.time转换为秒

Blu*_*ire 10 python time

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

bak*_*ble 12

你可以自己计算:

from datetime import datetime

t = datetime.now().time()
seconds = (t.hour * 60 + t.minute) * 60 + t.second
Run Code Online (Sandbox Code Playgroud)


Kru*_*pös 11

您需要将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
Run Code Online (Sandbox Code Playgroud)

链接我的灵感来自:


Kos*_*tas 6

正如 @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())
Run Code Online (Sandbox Code Playgroud)

(ps.通常这将是一条评论)


Thi*_*lle 5

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

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

datetime.timedelta 对象旨在表示持续时间,并且具有total_seconds()完全符合您要求的方法。