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

В коде выше модуль datetime импортирован посредством import datetime, а одним из классов, который определен в модуле datetime, является одноименный класс datetime. Далее используется метод now, который создает в Python объект datetime. Этот объект содержит локальное время и дату на текущий момент (на момент отработки кода).
Выполнив этот код на Python, мы получим в выводе текущие дату и время. Это будет выглядеть приблизительно следующим образом:
2021-01-26 13:13:56.780540
Получаем только дату в Python. Работа с датой
Внеся небольшие изменения в код на Python, можно получить только дату (date).

Теперь для получения объекта date был задействован метод today, который определен в классе date. Это позволило получить объект date и отобразить локальную дату на момент запуска программы.
В итоге результат отображения даты в Python изменится:
2021-01-26
Так как вы будете запускать этот код в другие дни (days), результат будет отличаться.
Что внутри datetime?
У модуля datetime есть атрибуты: time, timezone, tzinfo, timedelta и многие другие. Количество доступных атрибутов довольно велико, поэтому, чтобы увидеть все возможные данные (data), можно воспользоваться функцией dir:

Приблизительный вывод в 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.

Из объекта date можно без проблем получить текущие значения дня, года, месяца:
from datetime import date
today = date.today()
print("Какой сейчас год:", today.year)
print("Какой сейчас месяц:", today.month)
print("Какой сегодня день:", today.day)
А вот и результат:

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

Давайте опять передадим любые атрибуты, но чуть изменим код.
from datetime import time
a = time(11, 34, 56)
print("часы =", a.hour)
print("минуты =", a.minute)
print("секунды =", a.second)
print("микросекунды =", a.microsecond)

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

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

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

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

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

Выше были созданы 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, используют уже strptime.
Обработка часового пояса
Представим, что мы работаем над проектом, в котором надо обеспечить отображение даты и времени с учетом от часового пояса пользователей. Получить нужные данные (data) и обработать часовой пояс можно самостоятельно, но лучше всего воспользоваться готовым модулем pytZ.

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

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