Python:
Расчет даты в будущем или прошлом
Как это сделать:
Модуль datetime
в Python значительно облегчает работу с датами и временем. Взгляните:
from datetime import datetime, timedelta
# Текущая дата и время
now = datetime.now()
print("Сейчас: ", now)
# Добавляем 10 дней
future_date = now + timedelta(days=10)
print("Будущая дата (+10 дней): ", future_date)
# Вычитаем 5 дней
past_date = now - timedelta(days=5)
print("Прошлая дата (-5 дней): ", past_date)
Вывод может выглядеть так:
Сейчас: 2023-04-01 12:34:56.789012
Будущая дата (+10 дней): 2023-04-11 12:34:56.789012
Прошлая дата (-5 дней): 2023-03-27 12:34:56.789012
Просто, правда? Просто измените количество дней или используйте weeks
(недели), hours
(часы), minutes
(минуты) или seconds
(секунды) в timedelta
, чтобы перейти к нужному времени.
Подробнее
Давным-давно расчет дат и времени был сложной задачей. Приходилось иметь дело с високосными годами, часовыми поясами, переходом на летнее время - настоящий беспорядок. С модулями datetime
, date
и time
в Python все стало проще. Модуль обрабатывает все сложности за кулисами.
Вы могли бы спросить о альтернативах. Конечно, есть. Библиотека dateutil
может обрабатывать более сложные манипуляции с датами и их разбор. Это хороший выбор, когда datetime
не справляется на все сто.
С точки зрения реализации, когда вы используете timedelta
, Python корректирует дату, учитывая високосные года и тому подобное. Всегда проверяйте свои результаты, особенно когда дело касается часовых поясов. И помните, что по умолчанию datetime
наивен; он не учитывает часовые пояса, если вы ему об этом не скажете.
Смотрите также
- Документация по
datetime
в Python: https://docs.python.org/3/library/datetime.html - Библиотека
dateutil
: https://dateutil.readthedocs.io/en/stable/ - Обработка часовых поясов в Python: https://docs.python.org/3/library/zoneinfo.html