Работа с датами в Python
Модуль python-dateutil предоставляет мощное расширение для стандартного datetime. Устанавливается он следующим образом:
Установка библиотеки – pip3 install python-dateutil
Выше приведен пример парсинга даты из логов.
Вычисление относительных дельт (следующий месяц, следующий год, следующий понедельник, последняя неделя месяца и т.д.);
Вычисление относительных дельт между двумя заданными объектами даты и/или даты и времени;
Вычисление дат на основе очень гибких правил повторения с использованием надмножества спецификации iCalendar. Также поддерживается разбор строк RFC.
Общий разбор дат практически в любом строковом формате;
Реализации часового пояса (tzinfo) для файлов формата tzfile(5) (/etc/localtime, /usr/share/zoneinfo и т. д.), строки среды TZ (во всех известных форматах), файлов формата iCalendar, заданных диапазонов (с помощью относительных дельт ), часовой пояс локального компьютера, часовой пояс с фиксированным смещением, часовой пояс UTC и часовые пояса на основе реестра Windows.
Внутренняя актуальная информация о часовом поясе мира на основе базы данных Олсона.
Вычисление дат пасхального воскресенья для любого заданного года с использованием западных, православных или юлианских алгоритмов;
Комплексный набор тестов.
>>> from dateutil.relativedelta import *
>>> from dateutil.easter import *
>>> from dateutil.rrule import *
>>> from dateutil.parser import *
>>> from datetime import *
>>> now = parse("Sat Aug 16 17:13:46 UTC 2022")
>>> today = now.date()
>>> year = rrule(YEARLY,dtstart=now,bymonth=8,bymonthday=13,byweekday=FR)[0].year
>>> rdelta = relativedelta(easter(year), today)
>>> print("Today is: %s" % today)
Today is: 2003-10-11
>>> print("Year with next Aug 16th on a Friday is: %s" % year)
Year with next Aug 16th on is: 2022
>>> print("How far is the Easter of that year: %s" % rdelta)
How far is the Easter of that year: relativedelta(months=+6)
>>> print("And the Easter of that year is: %s" % (today+rdelta))
And the Easter of that year is: 2022-16-08
Документацию пакета можно найти здесь.