Python's timedelta: не могу ли я просто получить в любую единицу времени, которую я хочу, значение всей разницы?


Я пытаюсь иметь несколько умных дат, так как сообщение было сделано на моем сайте ("секунды с тех пор, часы с тех пор, недели с тех пор и т. д..") и я использую datetime.timedelta разница между utcnow и utc дата хранится в базе данных для поста.

Похоже, согласно документам, я должен использовать атрибут days и атрибут seconds, чтобы получить причудливые строки даты, которые я хочу.

Не могу ли я просто получить в любую единицу времени, которую я хочу, значение всей разницы? Неужели я пропал? что-нибудь?

Было бы идеально, если бы я мог просто получить всю разницу в секундах.
4 14

4 ответа:

Похоже, что Python 2.7 ввел методtotal_seconds () , который вы искали, я полагаю!

Вы можете вычислить разницу в секундах.

total_seconds = delta.days * 86400 + delta.seconds

Нет, вы не"что-то упускаете". Он не обеспечивает дельты в считанные секунды.

Было бы идеально, если бы я мог просто получить всю разницу в секундах.

Тогда простая-старая-unix-временная метка, предоставляемая модулем "time", может быть вам больше по вкусу.

Лично меня еще не убедило многое из того, что есть в "datetime".

Как сказал бобинс, вы можете использовать временные метки, например:

# assuming ts1 and ts2 are the two datetime objects
from time import mktime
mktime(ts1.timetuple()) - mktime(ts2.timetuple())
Хотя я думаю, что это еще более уродливо, чем просто вычисление секунд от Объекта timedelta...