Ускоренный курс по созданию, преобразованию и работе с датами с использованием модуля datetime из стандартной библиотеки.

Работать с датами с помощью Python очень просто благодаря модулю datetime из стандартной библиотеки. Сегодня мы расскажем, как работать с датами в вашей программе Python, используя этот бесценный модуль.

Для начала импортируйте datetime в свой скрипт:

Создание объекта даты

Создать объект даты очень просто: создайте экземпляр класса date и передайте день, месяц и год в качестве аргументов:

Выход:

2022-05-15

Также легко создать объект date, представляющий текущую дату, используя метод today()класса datetime:

Что если вы хотите создать дату со временем?

Создайте экземпляр класса datetime, передав день, месяц и год (обязательные аргументы) и (необязательно) час , минуты, секунды и микросекунды.

Например:

Выход:

2022-10-31 14:30:00

Мы по-прежнему смогли создать объект datetime, несмотря на то, что указали только час и минуту.

Создание объекта datetime из строки

Возможно, у вас уже есть строка, представляющая дату, которую вы хотите превратить в объект datetime.

Для этого вы используете метод strptime() класса datetime, передавая строку в качестве первого аргумента, а затем коды формата в качестве второго аргумента.

Каждый код формата должен иметь префикс % :

%d означает "день месяца в виде десятичного числа, дополненного нулями", %m означает "месяц в виде десятичного числа, дополненного нулями"и %Y означает "год с веком в виде десятичного числа».

По сути, эти коды формата сообщают методу, как читать строку, которую вы передаете.

Вы могли также заметить, что я включил символ - во второй аргумент, чтобы метод знал, что тире разделяет указанные коды формата.

Чтобы продемонстрировать это, давайте удалим тире из второго аргумента:

Выход:

ValueError: time data '01-10-1994' does not match format '%d%m%Y'

Вот фрагмент доступных кодов форматов:

Как вы могли догадаться, вы также можете преобразовать строку, представляющую дату и время, используя тот же метод:

Выход:

2022-06-15 10:00:00

Превращение объекта datetime в строку

Объекты date и datetime можно превратить в форматированные строки с помощью метода strftime:

Выход:

01/10/94

Как вы могли заметить, мы используем одни и те же коды форматирования, чтобы указать, как форматировать строку, созданную из объекта adatetime.

Выполнение расчетов с датами

Вы можете использовать арифметические операторы на datetime объектах для вычисления будущих дат, прошлых дат и многого другого.

Например, если вы хотите узнать, сколько дней отделяет ваш день рождения от дня рождения вашего партнера:

Выход:

212 days, 0:00:00

В этом примере переменная difference является ссылкой на объект timedelta:

Выход:

<class 'datetime.timedelta'>

Цитируя официальную документацию, объект timedelta «представляет продолжительность, разницу между двумя датами или временем».

Как и выше, вычитание объектов datetime дает объект timedelta, но вы также можете сами создавать объекты timedelta:

Давайте проверим это:

Выход:

2022-05-30 06:52:13.036610

И, как вы уже догадались, future_date — это объект datetime:

<class 'datetime.datetime'>

Класс времени

Класс time представляет значения времени. Атрибуты этого класса включают hour, minute, second, microsecond и tzinfo (информация о часовом поясе).

Создадим экземпляр класса time:

Выход:

13:30:00

Сравнение дат

Одним из распространенных вариантов использования модуля datetime является сравнение двух дат или проверка того, относится ли дата к определенному диапазону дат.

Например, давайте проверим, совпадают ли эти две даты:

Выход:

Oops!

Имейте в виду, что если бы только один из этих datetime объектов имел атрибут часа (или любой другой атрибут), то это не считалось бы совпадением:

Выход:

Phew!

Давайте проверим, попадает ли дата в диапазон дат:

Выход:

Better change my dentist appointment!

Заключение

Надеюсь, вам понравилось это краткое введение в модуль datetime. Я рекомендую вам прочитать официальную документацию, чтобы узнать больше.

Если вам понравилась эта статья, подпишитесь на меня в Medium и Twitter. Каждую неделю я буду изучать как минимум один модуль из стандартной библиотеки, а также публиковать руководства для забавных проектов, таких как извлечение из Википедии информации о матче ЧМ-2022.