Дата и время

В Python для описания даты и времени используется 3 разных объекта:

  • date для хранения даты "25 декабря 2018г."
  • time для времени без даты
  • datetime для времени с датой "25 декабря 2018г., 21:01:54"

Все объекты живут в модуле datetime:

import datetime
print(datetime.datetime.now())
print(datetime.date.today())

В модуле datetime есть отдельный объект timezone для хранения часового пояса: UTC, UTC+3h, UTC-8 и другие. Объекты time и datetime могут хранить время с учетом часового пояса или без.

Работать с часовыми поясами сложно: приходится учитывать летнее и зимнее время, следить за изменениями в законодательстве разных стран. В Python для этих целей есть популярная библиотека pytz. Она поставляется со своей базой данных и регулярно обновляется.

Чтобы избежать работы с часовыми поясами используют Unix Timestamp. Это число с количеством секунд, прошедших с полуночи 1 января 1970 года по UTC. Timestamp не зависит от часового пояса и выражается одним числом 1546704810.414488. Такой формат удобен при передаче и хранении данных, но непонятен человеку.

Все форматы даты и времени можно конвертировать один в другой. Это не тривиально, но спасает StackOverflow.

Примеры работы с датой и временем