Зачем нам нужен объект timedelta?
При работе с датой и временем в Python вам достаточно часто придется иметь дело с модулем datetime
. В данной статье мы поговорим о том, как использовать объект timedelta
модуля datetime
в Python для работы с датами. Данный объект указывает на промежуток времени и используется, когда нам нужно выполнить простые арифметические операции с объектами datetime
.
В частности, мы научимся (на примерах кода) делать следующее вещи:
- Создавать базовый объект
timedelta
- Выводить текущую дату и время
- Рассчитывать дату в будущем
- Рассчитывать дату в прошлом
- Вычислять время, прошедшее с момента определенного события, или время, оставшееся до наступления определенного события.
Необходимые импорты
Прежде чем приступить к выполнению перечисленных выше задач, давайте сначала импортируем необходимые модули, как показано во фрагменте кода ниже:
# Import Necessary Modules from datetime import date from datetime import time from datetime import datetime from datetime import timedelta
Как создать базовый объект timedelta в Python
Для начала давайте создадим базовый объект timedelta
:
time_delt1 = timedelta(days=270, hours=9, minutes=18) print(time_delt1) # Пример вывода # 270 days, 9:18:00
Итак, мы успешно создали объект timedelta
. Теперь нам нужно создать «эталонное» время, чтобы можно было применить созданный нами объект timedelta
для выполнения каких-нибудь арифметических действий. Сделаем это на следующем шаге.
Как вывести текущую дату и время в Python
Прежде чем проводить какие-либо вычисления, давайте зададим отправную точку. К примеру, возьмем текущую дату.
Получить текущую дату и время можно при помощи вызова метода now()
объекта datetime
, как показано во фрагменте кода ниже:
time_now = datetime.now() print(time_now) # Пример вывода # 2021-06-22 17:49:18.574503
Как рассчитать дату в будущем в Python
Теперь давайте посчитаем, какая дата будет после промежутка time_delt1
, который мы создали ранее.
Чтобы вычислить будущий момент времени, нам нужно только добавить диапазон, определенный объектом timedelta
, к текущему времени.
future_date1 = time_now + time_delt1 print(future_date1) # Пример вывода # 2022-03-20 03:07:18.574503
Теперь давайте рассмотрим другой пример, в котором мы хотим знать, какой день наступит через определенное количество дней, скажем, 189.
future_date2 = time_now + timedelta(days=189) print(future_date2) # Пример вывода # 2021-12-28 17:49:18.574503
Как рассчитать дату в прошлом в Python
Как вы уже, наверное, догадались, чтобы узнать, какой день был 189 дней назад, нам нужно только заменить «+» на «-» в приведенном выше примере. Вот как это выглядит:
past_date1 = time_now - timedelta(days=189) print(past_date1) # Пример вывода # 2020-12-15 17:49:18.574503
Как рассчитать прошедшее или оставшееся время в Python
Давайте теперь посчитаем, сколько времени осталось до Дня учителя в этом году в России отмечается 05 октября). Сделать это можно следующим образом. Чтобы вычислить с учетом сегодняшнего дня, мы можем вызвать метод today()
объекта date
для получения сегодняшней даты.
Синтаксис: today = date.today() # Возвращает сегодняшнюю дату
teachers_day = date(time_now.year, 10, 5) today = date.today()
Затем мы можем узнать, сколько дней осталось до Дня учителя, используя следующий фрагмент кода:
time_to_td = teachers_day - today print(f"Teachers' day is {time_to_td.days} days away") # Пример вывода # Teachers' day is 105 days away
Также возможно, что в этом году День учителя пройдет к тому времени, когда вы прочтете эту статью ?. Если День учителя в этом году уже прошел, сделайте следующее:
- Обновите интересующую дату на дату Дня учителя в следующем году.
- Подсчитайте, сколько дней осталось до Дня Учителя в следующем году.
Это показано в следующем фрагменте кода:
if teachers_day < today: print(f"This year's Teachers' Day was {(today-teachers_day).days} days ago") teachers_day = date(time_now.year + 1, 10, 5) time_to_td = teachers_day - today print(f"Next year's Teachers' day is {time_to_td.days} days away")
Заключение
Итак, мы разобрали, как применять объект timedelta
для работы с датами в Python. Поговорили о том, как его использовать для выполнения простых арифметических действий с датами и для вычисления прошлой и будущей даты. Мы также теперь умеем рассчитать время, прошедшее с момента определенного события, или время, оставшееся до определенного события.
Надеемся, вы нашли эту статью полезной. Спасибо за чтение!