У меня разница во времени
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
Есть ли встроенный метод для этого?
time1
иdiff
в вашем коде. Чтобы получить текущее время utc как наивный объект datetime, используйтеdatetime.utcnow()
вместо этого. Чтобы понять, почему вы должны использовать UTC, а не местное время, чтобы найти разницу, смотрите Find, если между datetime прошло 24 часа - Python .time.monotonic()
может быть предпочтительным, чтобы найти прошедшее время между событиями (вместоtime.time()
илиdatetime.utcnow()
).Ответы:
Использование
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
Вы заметите, что t3, результат вашего выражения UTC + 1, который выглядит как UTC + (моя локальная разница DST) ... не очень значимый. Вы должны рассмотреть возможность использования,
datetime.datetime.utcnow()
которое не будет прыгать на час при включении / выключении DST и может дать вам больше точности, чемtime.time()
источник
Вы можете использовать модуль mx.DateTime
источник