Ускоренный курс по созданию, преобразованию и работе с датами с использованием модуля 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.