Как рассчитать разницу во времени в Python
Опубликовано: 2022-01-23При работе с датами и временем в Python вам часто нужно вычислять разницу во времени. В этом руководстве вы узнаете, как рассчитать разницу между двумя временными метками в часах, минутах и секундах.
К концу этого урока вы узнаете:
- как использовать модуль Python
datetimeдля работы с датами и временем, - что такое объекты
timedeltaи чем они полезны, и - вычислить разницу во времени между любыми двумя метками времени — в часах, минутах и секундах.
Давайте начнем.
Как использовать модуль даты и времени Python
Для работы с датами и временем в Python вы будете использовать модуль datetime . Модуль datetime является частью стандартной библиотеки Python. Таким образом, вы можете сразу же импортировать его в свою рабочую среду, например:
import datetimeЧтобы рассчитать разницу во времени, вам нужно создать две разные временные метки. Вы можете выбрать для создания:
- два объекта
date, - два объекта
timeили - комбинация
dateиtime— объектыdatetime.
Как создать объект даты в Python
Давайте импортируем класс date из модуля datetime. Чтобы создать объект даты в Python, вы можете использовать общий синтаксис datetime.date(<year>,<month>,<day>) . Вот пример создания объекта date date1 :
from datetime import date date1 = datetime.date(2022,3,27) print(date1) # Output: 2022-03-27Вы можете попробовать код на компиляторе Geekflare Python для тестирования. Или установите Python на свой компьютер.
Как показано выше, когда вы печатаете дату, она форматируется в YYYY-MM-DD для дат.
Примечание . Не забудьте указать месяц как целое число без начальных нулей . Вероятно, вы привыкли добавлять начальный ноль к месяцу при записи дат.
Например, чтобы указать дату в июне, 6-м месяце года: используйте 6, а не 06.
Например, попробуйте запустить следующий фрагмент кода, где месяц указан как 03 , а не просто 3 . Вы увидите, что он выдает синтаксическую ошибку, как показано ниже:
date1 = datetime.date(2022,03,27) print(date1) # Error Message File "<ipython-input-12-6eb72084e6ce>", line 1 date1 = datetime.date(2022,03,27) ^ SyntaxError: invalid token Давайте теперь посмотрим, как создать объект time в Python.
Как создать объект времени в Python
Чтобы создать объект времени, давайте импортируем класс time . Любой объект времени Python можно создать, используя класс time , указав следующие атрибуты класса: hour , minute , second и microsecond .
Однако все эти атрибуты являются необязательными. Если вы не укажете определенный атрибут, скажем, second , по умолчанию он будет равен 0 .
В следующем фрагменте кода показано, как можно создать объект времени time1 . Как и в случае с объектом date , вы можете распечатать объект time , чтобы увидеть отформатированное время.
from datetime import time time1 = datetime.time(13,27,45,4600) print(time1) # Output: 13:27:45.004600Как создать объект datetime в Python
Как видите, объект date не имеет информации о времени. И объект time не содержит информации о дате.
Однако на практике вам потребуется информация как о дате, так и о времени. Поэтому вместо этого рекомендуется использовать класс datetime .
Вы можете получить доступ к классу datetime и создать объекты datetime в Python, как показано ниже:
dt1 = datetime.datetime(2022,3,27,13,27,45,46000) print(dt1) # Output: 2022-03-27 13:27:45.046000 Давайте теперь создадим еще один объект datetime dt2 без second атрибута. Вы можете видеть, что он установлен на 0 — значение по умолчанию.
dt2 = datetime.datetime(2022,6,30,14,28) print(dt2) # Output: 2022-06-30 14:28:00Итак, вы узнали, как создавать метки времени в Python — в виде даты, времени и даты и времени. Пришло время посмотреть, как можно вычислить разницу между любыми двумя временными метками.
Перейдите в следующий раздел, чтобы узнать.
Как использовать объект timedelta в Python
В Python timedelta обозначает промежуток времени. Это разница между двумя объектами date , time или datetime .
Если вы добавите или вычтете два объекта date , time или datetime , вы получите объект timedelta . Этот объект timedelta имеет полезные атрибуты и методы, которые могут помочь вычислить разницу во времени.
Давайте продолжим и вычислим разницу между двумя объектами datetime dt1 и dt2 .
dt1 = datetime.datetime(2022,3,27,13,27,45,46000) dt2 = datetime.datetime(2022,6,30,14,28) tdelta = dt2 - dt1 print(tdelta) print(type(tdelta)) # Output 95 days, 1:00:14.954000 <class 'datetime.timedelta'> Из приведенного выше фрагмента кода видно, что переменная tdelta содержит разницу во времени между dt1 и dt2 . И тип tdelta проверяется на принадлежность к классу timedelta с помощью встроенной в Python функции type() .

Теперь давайте закодируем другой пример.
Как найти разницу во времени между двумя датами
Возьмем простой, но интересный пример.
Задача : рассчитать разницу во времени между текущей датой (сегодня) и днем рождения.
Для этого установите сегодня в качестве первой временной метки, а свой день рождения в качестве второй временной метки.
В качестве первого шага создадим два объекта datetime :
- один на сегодня, давайте назовем это
today, и - еще один на твой день рождения, назовем это
bday
Класс datetime имеет метод now() , который дает вам текущую локальную дату и время. Так что давайте использовать это today — наша контрольная дата.
today = datetime.datetime.now() print(today) # Sample Output: 2022-01-22 09:10:18.489538 В приведенном ниже коде замените bday на свой день рождения, чтобы рассчитать время, оставшееся до вашего дня рождения в этом году.
Если вы читаете это после того, как ваш день рождения прошел, не стесняйтесь устанавливать bday на свой следующий день рождения.
bday = datetime.datetime(2022,8,30,11,59) print(bday) # Sample Output: 2022-08-30 11:59:00 Следующим шагом является вычисление time_diff , который является объектом timedleta , как объяснялось ранее. Просто bday today из дня рождения, и вы получите разницу во времени.
time_diff = bday - today print(f"Your birthday is in {time_diff}") # Output Your birthday is in 220 days, 2:46:00.127416 Чтобы узнать количество оставшихся дней, используйте атрибут days в time_diff , как показано ниже:
tdays = time_diff.days print(f"Your birthday is in {tdays} days.") # Output Your birthday is in 220 days.Как найти разницу во времени в секундах
Давайте теперь посчитаем, сколько секунд осталось до вашего дня рождения.
Чтобы вычислить общую разницу во времени в секундах, используйте метод timedelta total_seconds() для объекта time_diff .
tsecs = time_diff.total_seconds() print(f"Your birthday is {tsecs} seconds away.") # Output Your birthday is 19017960.127416 seconds away.Ну, это слишком долго ждать!
Тем не менее, теперь вы знаете, как рассчитать разницу во времени между любыми двумя метками времени в секундах.
Давайте теперь вернемся к некоторым основам и запишем следующее. В сутках 24 часа, в часе 60 минут, а в минуте 60 секунд.
Это кратко показано на изображении ниже:

Таким образом, чтобы преобразовать секунды в минуты, часы и дни, вы можете использовать следующую таблицу и разделить на соответствующий коэффициент преобразования.

В следующих разделах давайте преобразуем разницу во времени в секундах в минуты и часы.
Как найти разницу во времени в минутах
Чтобы получить разницу во времени в минутах, вам нужно всего лишь разделить общее количество секунд на 60.
Давайте разделим tsecs на 60 и сохраним его в переменной с именем tmins , например:
tmins = tsecs/60 print(f"Your birthday is {tmins} minutes away.") # Output Your birthday is 316966.0021236 minutes away.Как найти разницу во времени в часах
Теперь, когда вы вычислили разницу во времени в минутах, вы можете разделить ее на коэффициент 60, чтобы получить разницу в часах. Или вы можете разделить общее количество секунд на 60 * 60 = 3600.
thrs = tsecs/(60*60) print(f"Your birthday is {thrs} hours away.") # Output Your birthday is 5282.76670206 hours away.Итак, вы научились вычислять разницу во времени в любых единицах измерения по вашему выбору.
Вывод
В этом уроке вы узнали, как:
- создавать и работать с датами и временем, используя модуль даты и времени
datetime, - использовать объекты
timedelta, чтобы получить промежуток времени или разницу во времени, и - вычислить разницу во времени в секундах, минутах и часах.
Надеюсь, вы нашли этот урок полезным. Теперь, когда вы знаете все о расчете разницы во времени в Python, пришло время применить свои навыки на практике.
Удачного обучения и кодирования!
Узнайте, как написать равный или не равный код или сделать игру в змейку на питоне здесь.
