Преобразование TimeDiff в итоговые секунды

У меня есть разница во времени

time1 = datetime.datetime.fromtimestamp(time.mktime(time.gmtime())) ... time2 = datetime.datetime.fromtimestamp(time.mktime(time.gmtime())) diff = time2 - time1 

Теперь, как мне найти общее количество секунд, прошедших? diff.seconds не учитывает дни. Я мог бы сделать:

 diff.seconds + diff.days * 24 * 3600 

Есть ли встроенный метод для этого?

3 Solutions collect form web for “Преобразование TimeDiff в итоговые секунды”

Используйте timedelta.total_seconds() .

У вас есть проблема так или иначе с вашим datetime.datetime.fromtimestamp(time.mktime(time.gmtime())) .

(1) Если вам нужна только разница между двумя моментами в секундах, очень простое time.time() выполняет задание.

(2) Если вы используете эти временные метки для других целей, вам нужно подумать над тем, что вы делаете, потому что результат имеет большой запах:

gmtime() возвращает тайм-код в UTC, но mktime() ожидает время кортежа по местному времени.

Я в Мельбурне, Австралия, где стандартный TZ – UTC + 10, но летнее время остается в силе до завтрашнего утра, так что это UTC + 11. Когда я выполнил следующее, это было 2011-04-02T20: 31 местное время здесь … UTC был 2011-04-02T09: 31

 >>> import time, datetime >>> t1 = time.gmtime() >>> t2 = time.mktime(t1) >>> t3 = datetime.datetime.fromtimestamp(t2) >>> print t0 1301735358.78 >>> print t1 time.struct_time(tm_year=2011, tm_mon=4, tm_mday=2, tm_hour=9, tm_min=31, tm_sec=3, tm_wday=5, tm_yday=92, tm_isdst=0) ### this is UTC >>> print t2 1301700663.0 >>> print t3 2011-04-02 10:31:03 ### this is UTC+1 >>> tt = time.time(); print tt 1301736663.88 >>> print datetime.datetime.now() 2011-04-02 20:31:03.882000 ### UTC+11, my local time >>> print datetime.datetime(1970,1,1) + datetime.timedelta(seconds=tt) 2011-04-02 09:31:03.880000 ### UTC >>> print time.localtime() time.struct_time(tm_year=2011, tm_mon=4, tm_mday=2, tm_hour=20, tm_min=31, tm_sec=3, tm_wday=5, tm_yday=92, tm_isdst=1) ### UTC+11, my local time 

Вы заметите, что t3, результатом вашего выражения является UTC + 1, который, как представляется, UTC + (моя локальная разница в DST) … не очень значимый. Вам следует подумать об использовании datetime.datetime.utcnow() которое не будет прыгать на час, когда DST включается / выключается, и может дать вам больше точности, чем time.time()

Вы можете использовать модуль mx.DateTime

 import mx.DateTime as mt t1 = mt.now() t2 = mt.now() print int((t2-t1).seconds) 
  • В чем разница между «datetime.timedelta» и «dateutil.relativedelta.relativedelta» при работе только с днями?
  • Можно ли сравнить две строки изотопного времени?
  • Сравните только время в datetime - Python
  • Ошибка django datetime.datetime
  • кортеж python возвращает datetime.datetime
  • Python - конвертировать время в другой часовой пояс с am / pm
  • Разбор разных форматов дат из feedparser в python?
  • Получить заданную дату GMT и UTC offset в python
  • Дата составления с часовым поясом из электронной почты?
  • Кажется, что Django кэширует datetime.now ()
  • Какой самый быстрый способ извлечь день, месяц и год с определенной даты?
  • Python - лучший язык программирования в мире.