Статья посвящена работе с модулем datetime, который используется в языке программирования Python для определения даты и времени. В рамках изучения модуля будут рассмотрены классы Python date, Python time и Python timedelta.

Получение текущего времени и даты в Python

Сначала напишем пару простейших программ на Python.

Модуль datetime в Python

В коде выше модуль datetime импортирован посредством import datetime, а одним из классов, который определен в модуле datetime, является одноименный класс datetime. Далее используется метод now, который создает в Python объект datetime. Этот объект содержит локальное время и дату на текущий момент (на момент отработки кода).

Выполнив этот код на Python, мы получим в выводе текущие дату и время. Это будет выглядеть приблизительно следующим образом:

2021-01-26 13:13:56.780540

Получаем только дату в Python. Работа с датой

Внеся небольшие изменения в код на Python, можно получить только дату (date).

Модуль datetime в Python

Теперь для получения объекта date был задействован метод today, который определен в классе date. Это позволило получить объект date и отобразить локальную дату на момент запуска программы.

В итоге результат отображения даты в Python изменится:

2021-01-26  

Так как вы будете запускать этот код в другие дни (days), результат будет отличаться.

Что внутри datetime?

У модуля datetime есть атрибуты: time, timezone, tzinfo, timedelta и многие другие. Количество доступных атрибутов довольно велико, поэтому, чтобы увидеть все возможные данные (data), можно воспользоваться функцией dir:

Модуль datetime в Python

Приблизительный вывод в Python:

Модуль datetime в Python

На практике в Python чаще всего используют следующие классы модуля datetime:

  • time,
  • date,
  • datetime,
  • timedelta.

Класс date

Объект date позволяет работать с датой:

import datetime

a = datetime.date(2021, 1, 26)

print(a)

То есть вывод даты будет соответствовать тому, что вы пропишете в коде:

2021-01-26                                                                                                       

Здесь date — конструктор класса date. Этот конструктор принимает 3 аргумента: год, месяц, день. Также присутствует переменная a — объект date.

Если надо получит текущую дату, используем уже знакомый метод today.

from datetime import date

today = date.today()

print("Какая сегодня дата:", today)

Вывод на момент проверки:

Какая сегодня дата: 2021-01-26                                                                                   

Также существует возможность создавать объекты date, используя метку времени — timestamp. Этот термин используется при обозначении времени POSIX — подразумевается число секунд, которые прошли с 00:00:00 UTC 1.01.1970 г. Для преобразования метки времени в дату в Python используют метод fromtimestamp.

Модуль datetime в Python

Из объекта date можно без проблем получить текущие значения дня, года, месяца:

from datetime import date

today = date.today()

print("Какой сейчас год:", today.year)

print("Какой сейчас месяц:", today.month)

print("Какой сегодня день:", today.day)

А вот и результат:

Модуль datetime в Python

Класс time

Экземпляр класса time отвечает за время, куда входит широкий спектр данных (data): и часы, и минуты, и секунды, и даже микросекунды.

Модуль datetime в Python

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

from datetime import time

a = time(11, 34, 56)

print("часы =", a.hour)

print("минуты =", a.minute)

print("секунды =", a.second)

print("микросекунды =", a.microsecond)

Модуль datetime в Python

Следует обратить внимание, что аргумент microsecond передан не был. В результате было присвоение дефолтное значение, равное нулю.

Класс  datetime

Включает в себя информацию и о дате, и о времени.

Модуль datetime в Python

Первые 3 аргумента обязательны для конструктора datetime — это year, month и day. Значения, которые отсутствуют, заполняются нулями.

Дополнительно можно прописать вывод метки времени:

Модуль datetime в Python

Если же нужны значения текущего момента времени, получить его можно как посредством метода now, так и посредством метода today. В примере ниже задействован и now, и today:

Модуль datetime в Python

Класс timedelta

Объект, называемый timedelta, позволяет получить разницу между 2-мя моментами времени. Вот, как это работает:

Модуль datetime в Python

Приведем еще один пример с time delta:

Модуль datetime в Python

Выше были созданы 2 timedelta-объекта — t1 и t2. Их разница и была выведена на экран.

Если нужна более подробная информация о timedeltas , лучше всего заглянуть в официальную документацию.

Формат

Даты (dates), как и времена (times), могут быть представлены в разных странах по-разному. В США чаще применяют формат «MM/DD/YYYY» (months, days, years), в Соединенном Королевстве — «DD/MM/YYYY» (days, months, years). В языке программирования Python для работы с форматами существуют специальные методы: strftime и strptime.

Метод strftime определяется в классах time, date и datetime. Он позволит создать форматированную строку на основе заданного объекта.

Давайте отформатируем дату посредством strftime:

Модуль datetime в Python

Если же надо преобразовать строку в объект datetime, используют уже strptime.

Обработка часового пояса

Представим, что мы работаем над проектом, в котором надо обеспечить отображение даты и времени с учетом от часового пояса пользователей. Получить нужные данные (data) и обработать часовой пояс можно самостоятельно, но лучше всего воспользоваться готовым модулем pytZ.

Модуль datetime в Python

Что здесь что: datetime_NY и datetime_London представляют собой объекты datetime, которые содержат текущее время и дату соответствующего часового пояса. Как видите, ничего сложного.

Хотите получить самые новые знания про Python? Добро пожаловать на наши курсы!

Модуль datetime в Python

Источник: https://pythonist.ru/rabota-s-datoj-i-vremenem-modul-datetime/.