Найти в Дзене
Журнал разработчика

Запись 26. Поработаем со временем

В предыдущей записи мы познакомились с библиотеками и способами их подключения. Теперь рассмотрим одну из библиотек подробнее.

В предыдущей записи мы познакомились с библиотеками и способами их подключения. Теперь рассмотрим одну из библиотек подробнее.

Для работы со временем используем библиотеку datetime. В этой библиотеке помимо функций есть свой тип данных. Причём его название точно совпадает с именем библиотеки. Поэтому создание объекта этого типа выглядит так:

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

-2

Теперь посмотрим на результат:

-3

Что же мы передали в скобках при создании объекта datetime (слева направо):

  • год
  • месяц
  • день
  • час
  • минуты
  • секунды

Можно также указать и микросекунды.

Год, месяц и день – обязательные аргументы. Остальные аргументы являются необязательными и по умолчанию равны нулю.

Даты, созданные вышеуказанным способом, можно вычитать друг из друга. Давайте скорее попробуем сделать это.

-4

Вот так просто получаем разницу:

-5

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

UTC – "coordinated universal time" – всемирное координированное время

Это метод utcnow().

Получим текущее время:

-6
-7

Кстати, метод utcnow() можно применить к любой переменной типа datetime.

-8

И ещё один нюанс. Время, которое возвращает метод utcnow(), может не соответствовать вашему текущему времени. У меня, например, разница составляет 3 часа. Дело в разнице часовых поясов: utcnow() возвратил значение времени в нулевом по UTC часовом поясе, который отстаёт от московского на 3 часа. Исправим данную погрешность, прибавим 3 часа к результату.

Чтобы сделать это необходимо использовать тип timedelta(), который позволяет сохранить определённый промежуток времени:

-9

В timedelta() можно указать следующие значения:

  • days
  • hours
  • minutes
  • seconds
  • microseconds

Например, так:

-10

Решил добавить сюда ещё немного информации о форматировании времени.

Давайте получим время в привычном формате, например, 12:45. В этом нам поможет метод strftime().

-11

Получим время в привычном виде:

-12

Можно использовать следующие параметры:

  • %S – секунды
  • %M – минуты
  • %H – часы
  • %B – месяц по-английски
  • %Y – год
  • %A – название дня недели по-английски
  • %U – номер недели в году

А на этом пока всё. Если есть вопросы, пишите в комментариях, будем разбираться.