Timedelta Python: я не могу просто получить в какой-либо единице времени, я хочу значение всей разницы? - PullRequest
14 голосов
/ 01 февраля 2009

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

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

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

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

Ответы [ 4 ]

21 голосов
/ 13 августа 2010

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

15 голосов
/ 01 февраля 2009

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

total_seconds = delta.days * 86400 + delta.seconds

Нет, вы не «что-то упускаете». Это не дает дельты в считанные секунды.

5 голосов
/ 01 февраля 2009

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

# assuming ts1 and ts2 are the two datetime objects
from time import mktime
mktime(ts1.timetuple()) - mktime(ts2.timetuple())

Хотя я бы подумал, что это даже страшнее, чем просто подсчитать секунды из объекта timedelta ...

5 голосов
/ 01 февраля 2009

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

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

Лично мне еще многое предстоит убедить в том, что в «дате и времени».

...