Рассчитать разницу во времени с помощью python
Мне интересно, есть ли способ или встроенная библиотека, чтобы найти разницу во времени от двух строковых входных данных.
Я имею в виду, если у меня есть 2 входных строк:
- ‘2013-10-05T01:21:07Z’
- ‘2013-10-05T01: 21: 16Z’
Как я могу рассчитать разницу во времени и распечатать ее в качестве вывода.
Я знаю, что это звучит немного глупо, но любая помощь в этом приветствуется.
3 ответов
разбор строк с помощью strptime() :
это будет анализировать заданные строки времени как локальное время (установка летнего времени (DST) на автоматический), а результаты-временные структуры. Они по-прежнему отражают, был ли DST явно выключен (0), включен (1) или неявно автоматический (-1). Преобразуйте их в float (секунды с 1970-01-01):
затем вычислите разницу (в секундах):
и преобразовать их в дни / часы / минуты / секунды:
последний блок работает только правильно для положительных различий, поэтому будьте осторожны, чтобы не поменять a и b 😉
но @J. F. Себастьян правильно указал, что это может быть не то, что вы намеревались. Судя по нотации, ваши строки описывают время UTC, а не местное время. Для простых временных различий это актуально, если ваше время охватывает переключатель DST. В этом случае это, конечно, приведет к времени разница в один час слишком велика или один час слишком мал (потому что UTC всегда без DST).
чтобы избежать этого, вы можете установить флаг DST из автоматического (-1) в фиксированное значение (e. г. 0 для off) и используйте следующие значения:
или, как указал @J. F. Sebastian, вы можете забыть о time модуль и вместо того, чтобы использовать datetime.datetime который не знает о DST аспекте:
тогда результаты datetime объекты, которые можно вычесть напрямую получить timedelta объект, который представляет такую разницу во времени, как вы хотите. Печать это приведет к sth как 0:00:05 что может быть именно то, что вы ищете.
вы, похоже, используете формат ISO 8601 dateTime. Этот формат используется во многих местах,включая формат обмена GPS.
Python-сообщество
есть дата…2008.10.02 00:10:23.00741 и есть вторая…2008.09.29 00:45:23.00321..надо отбросить число месяца и временную часть и посчитать разницу месяцев…здесь разница дат будет 1 месяц..даты получены из ДБ оракл через for … а.fetchall():
#2 Дек. 10, 2008 12:46:50
как получить разницу во времени в месяцах..
самый простой вариант, без использовать datetime, timedelta.
#3 Дек. 10, 2008 12:57:03
как получить разницу во времени в месяцах..
Dimka665
Можно маленько допинать 🙂
s = lambda d1,d2: int(d1.split(‘.’)) — int(d2.split(‘.’))+(int(d1.split(‘.’))-int(d2.split(‘.’)))*12
s(d1,d2)
Как найти разницу во времени, используя Python?
В Python очень легко выполнять математику даты и времени, используя объекты дельта времени. Всякий раз, когда вы хотите добавить или вычесть дату / время, используйте DateTime.datetime(), а затем добавьте или вычтите экземпляры date time.time delta().
Дельта-объект времени представляет собой продолжительность, разницу между двумя датами или временем. Дельта-конструктор времени имеет следующую сигнатуру функции
DateTime.timedelta ([дни [, секунды [, микросекунды [, миллисекунды [, минуты [, часы [, недели]]]]]]]) ¶
Примечание. Все аргументы являются необязательными и по умолчанию равны 0. Аргументы могут быть целыми, длинными или плавающими и могут быть положительными или отрицательными. Вы можете прочитать больше об этом здесь https://docs.python.org/2/library/datetime.html#timedelta-objects
Пример
Пример использования объектов и дат времени
Вывод
арифметика time delta() не поддерживается для объектов date time.time(); если вам нужно использовать смещения из существующего объекта date time.time(), просто используйте date time.datetime.combine(), чтобы сформировать экземпляр date time.date time(), выполнить вычисления и снова «извлечь» время с помощью метода .time().
Вычитание 2 объектов даты и времени дает объект дельты времени. Этот дельта-объект времени можно использовать для нахождения точной разницы между двумя датами.
Python. Подсчёт времени выполнения кода
Хочу посчитать время выполнения кода. Для этого подгрузил модуль time и черед одноименную функцию создаю отсечки начала выполнения и завершения. Соответственно разница даёт время выполнения. Это корректно работает внутри python модуля и поэтому идёт отслеживание только времени выполнения конкретного модуля.
Для того, чтобы данная схема работала для начала и конца “цепочки” модулей была придумана вот такая схема.
Вроде бы работает, но хочется убедиться в правильности.
Ноды StartTime и EndTime выглядят одинаково, вот так:
Нод Time, просто делает вычисление.
Когда я решил перенести StartTime и EndTime внутрь одно модуля с вычислениями, то они перестали работать.