Как определить разницу во времени между двумя datetime
объектами в минутах ?
python
datetime
date-arithmetic
Хобхаус
источник
источник
delorean
искажаетdatetime
,pytz
подход, например, пример кода для начала работы может быть записан какd = datetime.now(timezone(EST))
(одна читаемая строка вместо пяти).Новым в Python 2.7 является
timedelta
метод экземпляра.total_seconds()
. Из документов Python это эквивалентно(td.microseconds + (td.seconds + td.days * 24 * 3600) * 10**6) / 10**6
.Ссылка: http://docs.python.org/2/library/datetime.html#datetime.timedelta.total_seconds
источник
elapsedTime / timedelta(minutes=1)
чтобы получить разницу в минутах в Python 3Используя пример datetime
Продолжительность в годах
Продолжительность в днях
Продолжительность в часах
Продолжительность в минутах
Продолжительность в секундах
Продолжительность в микросекундах
Общая продолжительность между двумя датами
или просто:
Изменить 2019 Поскольку этот ответ набрал силу, я добавлю функцию, которая может упростить использование для некоторых
источник
TypeError: 'float' object is not subscriptable
при использовании для:then = datetime(2017, 8, 11, 15, 58, tzinfo=pytz.UTC)
now = datetime(2018, 8, 11, 15, 58, tzinfo=pytz.UTC)
getDuration(then, now, 'years')
Просто вычтите одно из другого. Вы получаете
timedelta
объект с разницей.Вы можете конвертировать
dd.days
,dd.seconds
иdd.microseconds
до нескольких минут.источник
Если
a
,b
являются объектами datetime, то чтобы найти разницу во времени между ними в Python 3:В более ранних версиях Python:
Если
a
,b
являются наивными объектами даты и времени, такими как возвращенные,datetime.now()
то результат может быть неправильным, если объекты представляют местное время с различными смещениями UTC, например, вокруг переходов DST или для прошлых / будущих дат. Более подробная информация: Найти, если между датами прошло 24 часа - Python .Чтобы получить достоверные результаты, используйте объекты даты и времени с учетом времени UTC или часового пояса.
источник
Используйте divmod:
источник
Вот как я получаю количество часов, прошедших между двумя объектами datetime.datetime:
источник
timedelta.seconds
только дает явно сохраненное количество секунд, которое, как гарантируют документы, составит менее одного дня. Вы хотите(after - before).total_seconds()
, который дает количество секунд, которые охватывают всю дельту.(after - before).total_seconds() // 3600
(Python 2.7) или(after - before) // timedelta(seconds=3600)
(Python 3)Чтобы просто найти количество дней: у timedelta есть атрибут days. Вы можете просто запросить это.
источник
Просто подумал, что было бы полезно упомянуть форматирование и в отношении timedelta. strptime () анализирует строку, представляющую время в соответствии с форматом.
Это выведет: 0: 05: 00.518000
источник
Я использую что-то вроде этого:
источник
return t1-t2
это чтобы найти разницу между текущим временем и 9.30 утра.
источник
Это мой подход с использованием mktime .
источник
mktime()
ожидает местное время в качестве входа. Местное время может быть неоднозначным иmktime()
может дать неправильный ответ в этом случае. Используйтеa - b
вместо этого (a, b - объекты даты и времени) .mktime()
ненужно и иногда неправильно. Не используйте это в этом случае.Другими способами получить разницу между датами;
Получите вывод в мин.
Спасибо
источник
Я использовал разницу во времени для непрерывных интеграционных тестов, чтобы проверить и улучшить свои функции. Вот простой код, если кому-то это нужно
С помощью:
и у меня есть что-то подобное в выводе журнала
источник
Основываясь на замечательном ответе @Attaque , я предлагаю более короткую упрощенную версию калькулятора разности даты и времени:
Я изменил его, чтобы избежать объявления повторяющихся функций, убрал симпатичный интервал печати по умолчанию и добавил поддержку для миллисекунд, недель и месяцев ISO (голые в уме месяцы являются лишь приблизительными, исходя из предположения, что каждый месяц равен
365/12
).Который производит:
источник