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