time — Доступ к времени и преобразования


Данный модуль предоставляет различные функции, связанные со временем. Дополнительные функции см. также в модулях datetime и calendar.

Хотя данный модуль всегда доступен, не все функции доступны на всех платформах. Большинство функций, определённых в этом модуле, вызывают функции библиотеки платформы C с тем же именем. Иногда может быть полезно обратиться к документации по платформе, поскольку семантика данных функций зависит от платформы.

Необходимо пояснение некоторых терминов и соглашений.

  • Эпоха — это точка начала отсчёта времени, которая зависит от платформы. Для Unix эпоха — 1 января 1970 года, 00:00:00 (UTC). Чтобы узнать, какая эпоха на данной платформе, посмотрите на time.gmtime(0).
  • Термин секунды с начала эпохи относится к суммарному количеству секунд, прошедших с начала эпохи, обычно за исключением високосных секунд. Високосные секунды исключаются из этого общего количества на всех платформах, совместимых с POSIX.
  • Функции в этом модуле могут не обрабатывать даты и время до эпохи или далеко в будущем. Точка отсечки в будущем определяется библиотекой C; для 32-битных систем это обычно 2038 год.
  • Функция strptime() может анализировать 2-значные годы, если задан код формата %y. Когда анализируются двузначные годы, они преобразуются в соответствии со стандартами POSIX и ISO C: значения 69–99 сопоставляются с 1969–1999, а значения 0–68 сопоставляются с 2000–2068.
  • UTC — это всемирное координированное время (ранее известное как среднее время по Гринвичу или GMT). Аббревиатура UTC — это не ошибка, а компромисс между английским и французским языками.
  • Летнее время — это переход на летнее время, корректировка часового пояса (обычно) на один час в течение года. Правила перехода на летнее время являются магическими (определяются местным законодательством) и могут меняться из года в год. В библиотеке C есть таблица, содержащая локальные правила (часто она считывается из системного файла для гибкости), и в этом отношении она является единственным источником истинной мудрости.

  • Точность различных функций реального времени может быть меньше, чем предполагают единицы измерения, в которых выражается их значение или аргумент. Например, в большинстве систем Unix часы «тикают» только 50 или 100 раз в секунду.

  • С другой стороны, точность time() и sleep() лучше, чем их эквиваленты в Unix: время выражается числами с плавающей запятой, time() возвращает наиболее точное доступное время (используя Unix gettimeofday(), где доступно), а sleep() примет время с ненулевым дробным значением (для реализации используется Unix select(), где это возможно).

  • Значение времени, возвращенное gmtime(), localtime() и strptime() и принятое asctime(), mktime() и strftime(), представляет собой последовательность из 9 целых чисел. Возвращаемые значения gmtime(), localtime() и strptime() также предлагают имена атрибутов для отдельных полей.

    См. struct_time для описания данных объектов.

    Изменено в версии 3.3: Тип struct_time был расширен для предоставления атрибутов tm_gmtoff и tm_zone, когда платформа поддерживает соответствующие члены struct tm.

    Изменено в версии 3.6: Атрибуты struct_time tm_gmtoff и tm_zone теперь доступны на всех платформах.

  • Используйте следующие функции для преобразования между представлениями времени:

    Из До Использование
    секунды с начала эпохи struct_time в UTC gmtime()
    секунды с начала эпохи struct_time в локальном времени localtime()
    struct_time в UTC секунды с начала эпохи calendar.timegm()
    struct_time в local time секунды с начала эпохи mktime()

Функции

time.asctime([t])

Преобразовать кортеж или struct_time, представляющий время, возвращённый gmtime() или localtime(), в строку следующего вида: 'Sun Jun 20 23:21:05 1993'. Поле дня состоит из двух символов и дополняется пробелом, если день представляет собой одну цифру, например: 'Wed Jun  9 04:26:40 1993'.

Если t не указан, используется текущее время, возвращённое localtime(). Информация о локали не используется asctime().

Примечание

В отличие от одноимённой C функции, asctime() не добавляет завершающую новую строку.

time.pthread_getcpuclockid(thread_id)

Возвращает clk_id часов процессорного времени потока для указанного thread_id.

Используйте атрибут threading.get_ident() или ident объектов threading.Thread, чтобы получить подходящее значение для thread_id.

Предупреждение

Передача недопустимого или просроченного thread_id может привести к неопределенному поведению, например к ошибке сегментации.

Доступность: Unix (см. справочную страницу для pthread_getcpuclockid(3) для дополнительной информации).

Добавлено в версии 3.7.

time.clock_getres(clk_id)

Возвращает разрешение (точность) указанных часов clk_id. Обратитесь к Константы идентификатора часов для получения списка допустимых значений для clk_id.

Доступность: Unix.

Добавлено в версии 3.3.

time.clock_gettime(clk_id) → float

Возвращает время указанных часов clk_id. Обратитесь к Константы идентификатора часов для получения списка допустимых значений clk_id.

Доступность: Unix.

Добавлено в версии 3.3.

time.clock_gettime_ns(clk_id) → int

Аналогично clock_gettime(), но время возвращается в наносекундах.

Доступность: Unix.

Добавлено в версии 3.7.

time.clock_settime(clk_id, time: float)

Устанавливает время указанных часов clk_id. В настоящее время CLOCK_REALTIME является единственным приемлемым значением clk_id.

Доступность: Unix.

Добавлено в версии 3.3.

time.clock_settime_ns(clk_id, time: int)

Аналогична clock_settime(), но устанавливает время в наносекундах.

Доступность: Unix.

Добавлено в версии 3.7.

time.ctime([secs])

Преобразование времени, выраженного в секундах, начиная с эпохи, в строку вида: 'Sun Jun 20 23:21:05 1993', представляющую местное время. Поле дня состоит из двух символов и дополняется пробелом, если день представляет собой одну цифру, например: 'Wed Jun  9 04:26:40 1993'.

Если secs не указан или None, используется текущее время, возвращенное time(). ctime(secs) эквивалентен asctime(localtime(secs)). Информация о локали не используется в ctime().

time.get_clock_info(name)

Получить информацию об указанных часах как объект пространства имён. Поддерживаются имена часов и соответствующие функции для чтения их значения:

У результата есть следующие атрибуты:

  • adjustable: True, если часы могут быть изменены автоматически (например, с помощью NTP демона) или вручную системным администратором, False в противном случае
  • implementation: имя базовой функции C, используемой для получения значения часов. Возможные значения см. в Константы идентификатора часов.
  • monotonic: True, если часы не могут идти назад, False в противном случае
  • resolution: разрешение часов в секундах (float)

Добавлено в версии 3.3.

time.gmtime([secs])

Преобразование времени, выраженного в секундах, начиная с эпохи, в struct_time в формате UTC, в котором флаг dst всегда равен нулю. Если secs не указан или None, используется текущее время, возвращённое time(). Доли секунды не учитываются. См. выше описание объекта struct_time. См. calendar.timegm() для инверсии этой функции.

time.localtime([secs])

Аналогична gmtime(), но преобразуется в местное время. Если secs не указан или None, используется текущее время, возвращённое time(). Флаг dst установлен на 1, когда летнее время применяется к данному времени.

time.mktime(t)

Обратная функция localtime(). Его аргументом является struct_time или полная 9-кортеж (поскольку требуется флаг dst; используйте -1 в качестве флага dst, если он неизвестен), который выражает время в местном формате, а не в формате UTC. Возвращает число с плавающей запятой для совместимости с time(). Если входное значение не может быть представлено как допустимое время, будет вызвано либо OverflowError, либо ValueError (что зависит от того, перехватывается ли недопустимое значение Python или базовыми библиотеками C). Самая ранняя дата, для которой он может сгенерировать время, зависит от платформы.

time.monotonic() → float

Возвращает значение (в долях секунды) монотонных часов, т. е. часов, которые не могут идти назад. На часы не влияют обновления системных часов. Контрольная точка возвращаемого значения не определена, поэтому допустима только разница между результатами последовательных вызовов.

Добавлено в версии 3.3.

Изменено в версии 3.5: Функция теперь всегда доступна и всегда общесистемна.

time.monotonic_ns() → int

Аналогична monotonic(), но возвращаемое время в наносекундах.

Добавлено в версии 3.7.

time.perf_counter() → float

Возвращает значение (в долях секунды) счетчика производительности, т. е. часы с самым высоким доступным разрешением для измерения короткой продолжительности. Он включает время, прошедшее во время сна, и является общесистемным. Контрольная точка возвращаемого значения не определена, поэтому допустима только разница между результатами последовательных вызовов.

Добавлено в версии 3.3.

time.perf_counter_ns() → int

Аналогична perf_counter(), но возвращаемое время в наносекундах.

Добавлено в версии 3.7.

time.process_time() → float

Возвращает значение (в долях секунды) суммы системного и пользовательского процессорного времени текущего процесса. Она не включает время, прошедшее во время сна. Он распространяется на весь процесс по определению. Контрольная точка возвращаемого значения не определена, поэтому допустима только разница между результатами последовательных вызовов.

Добавлено в версии 3.3.

time.process_time_ns() → int

Аналогична process_time(), но возвращаемое время в наносекундах.

Добавлено в версии 3.7.

time.sleep(secs)

Приостанавливает выполнение вызывающего потока на заданное количество секунд. Аргумент может быть числом с плавающей запятой, чтобы указать более точное время ожидания. Фактическое время приостановки может быть меньше запрошенного, потому что любой перехваченный сигнал завершит sleep() после выполнения процедуры перехвата этого сигнала. Кроме того, время приостановки может быть больше запрошенного на произвольную величину из-за планирования других действий в системе.

Изменено в версии 3.5: Функция теперь находится в состоянии ожидания по крайней мере secs, даже если сон прерывается сигналом, за исключением случаев, когда обработчик сигнала вызывает исключение (обоснование см. в PEP 475).

time.strftime(format[, t])

Преобразует кортеж или struct_time, представляющий время, возвращённое gmtime() или localtime(), в строку, указанную аргументом format. Если t не указан, используется текущее время, возвращённое localtime(). format должен быть строкой. Вызывается ValueError, если какое-либо поле в t находится за пределами допустимого диапазона.

0 — допустимый аргумент для любой позиции в кортеже времени; если это обычно недопустимо, значение принудительно устанавливается на правильное.

Следующие директивы могут быть встроены в строку format. Они показаны без дополнительной ширины поля и спецификации точности и заменены указанными символами в результате strftime():

Директива Значение Примечания
%a Сокращённое название дня недели локали.  
%A Полное название дня недели локали.  
%b Сокращенное название месяца локали.  
%B Полное название месяца локали.  
%c Соответствующее представление даты и времени локали.  
%d День месяца как десятичное число [01,31].  
%H Час (24-часовые часы) как десятичное число [00,23].  
%I Час (12-часовые часы) как десятичное число [01,12].  
%j День года как десятичное число [001, 366].  
%m Месяц как десятичное число [01,12].  
%M Минута как десятичное число [00,59].  
%p Эквивалент языкового стандарта: AM или PM. (1)
%S Секунда как десятичное число [00,61]. (2)
%U Номер недели года (воскресенье как первый день недели) как десятичное число [00,53]. Все дни в новом году, предшествующем первому воскресенью, считаются отсчитываются с 0 недели. (3)
%w День недели в виде десятичного числа [0 (воскресенье), 6].  
%W Номер недели года (понедельник как первый день недели) как десятичное число [00,53]. Все дни в новом году, предшествующем первому понедельнику, считаются с 0 недели. (3)
%x Соответствующее представление даты локали.  
%X Соответствующее представление времени локали.  
%y Год без века как десятичное число [00,99].  
%Y Год с веком как десятичное число.  
%z Смещение часового пояса, указывающее на положительную или отрицательную разницу во времени от UTC/GMT форматов +HHMM или -HHMM, где H представляет десятичные часовые цифры, а M представляет десятичные минутные цифры [-23:59, +23:59].  
%Z Имя часового пояса (без символов, если часовой пояс не существует).  
%% Литерал символа '%'.  

Заметки:

  1. При использовании с функцией strptime() действует только директива %p поле выходного часа, если для анализа часа используется директива %I.
  2. Диапазон действительно составляет от 0 до 61; значение 60 действительно в поддерживаются метки времени, представляющие високосные секунды, и значение 61 по историческим причинам.
  3. При использовании с функцией strptime() %U и %W используются только в вычисления, когда день недели и год указаны.

Вот пример формата дат, совместимого со стандартом электронной почты Интернета RFC 2822. [1]

>>> from time import gmtime, strftime
>>> strftime("%a, %d %b %Y %H:%M:%S +0000", gmtime())
'Thu, 28 Jun 2001 14:17:15 +0000'

Дополнительные директивы могут поддерживаться на определенных платформах, но только перечисленные здесь имеют значение, стандартизированное ANSI C. Чтобы просмотреть полный множество кодов форматов, поддерживаемых на вашей платформе, обратитесь к документации strftime(3).

На некоторых платформах необязательная спецификация ширины поля и точности может следовать сразу за начальным '%' директивы в следующем порядке; это тоже не переносимо. Ширина поля обычно равна 2, за исключением %j, где она равна 3.

time.strptime(string[, format])

Парсит строку, представляющую время в соответствии с форматом. Возвращаемое значение — struct_time, возвращаемое gmtime() или localtime().

Параметр format использует те же директивы, что и параметр strftime(); по умолчанию он равен "%a %b %d %H:%M:%S %Y", что соответствует возвращаемому ctime() форматированию. Если string не может быть проанализирован в соответствии с format или если он имеет лишние данные после парсинга, вызывается ValueError. Значения по умолчанию, используемые для заполнения любых отсутствующих данных, когда невозможно вывести более точные значения, — (1900, 1, 1, 0, 0, 0, 0, 1, -1). Оба string и format должны быть строками.

Например:

>>> import time
>>> time.strptime("30 Nov 00", "%d %b %y")   # doctest: +NORMALIZE_WHITESPACE
time.struct_time(tm_year=2000, tm_mon=11, tm_mday=30, tm_hour=0, tm_min=0,
                 tm_sec=0, tm_wday=3, tm_yday=335, tm_isdst=-1)

Поддержка директивы %Z основана на значениях, содержащихся в tzname, и на том, является ли daylight истинным. Из-за этого он зависит от платформы, за исключением распознавания UTC и GMT, которые всегда известны (и считаются часовыми поясами без перехода на летнее время).

Поддерживаются только директивы, указанные в документации. Поскольку strftime() реализуется для каждой платформы, иногда он может предлагать больше директив, чем указано в списке. Но strptime() не зависит от какой-либо платформы и, таким образом, не обязательно поддерживает все доступные директивы, которые не задокументированы как поддерживаемые.

class time.struct_time

Тип последовательности значений времени, возвращаемой gmtime(), localtime() и strptime(). Это объект с интерфейсом именованного кортежа: доступ к значениям можно получить по индексу и по имени атрибута. Присутствуют следующие значения:

Индекс Атрибут Значения
0 tm_year (например, 1993)
1 tm_mon range [1, 12]
2 tm_mday range [1, 31]
3 tm_hour range [0, 23]
4 tm_min range [0, 59]
5 tm_sec range [0, 61]; см. (2) в описании strftime()
6 tm_wday range [0, 6], понедельник – 0
7 tm_yday range [1, 366]
8 tm_isdst 0, 1 или -1; смотри ниже
N/A tm_zone аббревиатура названия часового пояса
N/A tm_gmtoff смещение к востоку от UTC в секундах

Обратите внимание, что в отличие от структуры C, значение месяца находится в диапазоне [1, 12], а не [0, 11].

В вызовах mktime() для tm_isdst может быть установлено значение 1, когда действует летнее время, и 0, когда оно не действует. Значение -1 указывает, что это неизвестно и обычно приводит к заполнению правильного состояния.

Когда кортеж неправильной длины передаётся функции, ожидающей struct_time или содержащей элементы неправильного типа, вызывается TypeError.

time.time() → float

Возвращает время в секундах с начала эпохи в виде числа с плавающей запятой. Дата эпохи и обработка високосных секунд зависят от платформы. В Windows и большинстве систем Unix эпоха начинается с 1 января 1970 года, 00:00:00 (UTC), и дополнительные секунды не учитываются во времени в секундах с начала эпохи. Это обычно упоминается как Unix время. Чтобы узнать, какая эпоха на данной платформе, посмотрите gmtime(0).

Обратите внимание, что хотя время всегда возвращается в виде числа с плавающей запятой, не все системы предоставляют время с большей точностью, чем 1 секунда. Хотя данная функция обычно возвращает неубывающие значения, она может возвращать меньшее значение, чем предыдущий вызов, если системные часы были установлены назад между двумя вызовами.

Число, возвращаемое time(), может быть преобразовано в более распространённый формат времени (т. е. год, месяц, день, час и т. д.) в формате UTC, передав его функции gmtime(), или в местное время, передав его функции localtime(). В обоих случаях возвращается объект struct_time, из которого компоненты календарной даты могут быть доступны как атрибуты.

time.thread_time() → float

Возвращает значение (в долях секунды) суммы системного и пользовательского процессорного времени текущего потока. Он не включает время, прошедшее во время сна. Она специфична для потока по определению. Контрольная точка возвращаемого значения не определена, поэтому допустима только разница между результатами последовательных вызовов в одном потоке.

Доступность: поддерживаются системы Windows, Linux, Unix CLOCK_THREAD_CPUTIME_ID.

Добавлено в версии 3.7.

time.thread_time_ns() → int

Аналогична thread_time(), но возвращаемое время в наносекундах.

Добавлено в версии 3.7.

time.time_ns() → int

Аналогична time(), но возвращает время в виде целого числа наносекунд, начиная с эпохи.

Добавлено в версии 3.7.

time.tzset()

Сбрасывает правила преобразования времени, используемые подпрограммами библиотеки. Переменная среды TZ указывает, как это делается. Она также установит переменные tzname (из переменной среды TZ), timezone (не летнее время в секундах к западу от UTC), altzone (летнее время в секундах к западу от UTC) и daylight (0, если в этом часовом поясе нет правил перехода на летнее время). , или ненулевым, если есть время, прошлое, настоящее или будущее, когда применяется летнее время).

Доступность: Unix.

Примечание

Хотя во многих случаях изменение переменной среды TZ может повлиять на вывод функций, таких как localtime(), без вызова tzset(), на это поведение не следует полагаться.

Переменная среды TZ не должна содержать пробелов.

Стандартный формат переменной среды TZ (для ясности добавлены пробелы):

std offset [dst [offset [,start[/time], end[/time]]]]

Где компоненты:

std и dst
Три или более буквенно-цифровых символов, обозначающих часовой пояс. Это будет распространяется на time.tzname
offset
Смещение имеет вид: ± hh[:mm[:ss]]. Это указывает на значение добавлено местное время для прибытия в UTC. Если перед ним стоит «-», часовой пояс находится к востоку от нулевого меридиана; в противном случае это запад. Если смещение не следует dst, предполагается, что летнее время на один час опережает стандартное время.
start[/time], end[/time]

Указывает, когда переходить на летнее время и обратно. Формат даты начала и окончания являются одним из следующих:

Jn
Юлианский день n (1 <= n <= 365). Високосные дни не учитываются, так что в все годы 28 февраля — 59-й день, а 1 марта — 60-й день.
n
Отсчитываемый от нуля день по юлианскому календарю (0 <= n <= 365). Високосные дни засчитываются, и можно отнести к 29 февраля.
Mm.n.d
d-й день (0 <= d <= 6) недели n месяца m года (1 <= n <= 5, 1 <= m <= 12, где неделя 5 означает «последний день d в месяце m», который может встречаться либо в четвертом, либо в пятом неделя). Неделя 1 – это первая неделя, на которую приходится d-й день. Нулевой день — воскресенье.

time имеет тот же формат, что и offset, за исключением того, что начальный знак («-» или «+») не допускается. По умолчанию, если время не указано, 02:00:00.

>>> os.environ['TZ'] = 'EST+05EDT,M4.1.0,M10.5.0'
>>> time.tzset()
>>> time.strftime('%X %x %Z')
'02:07:36 05/08/03 EDT'
>>> os.environ['TZ'] = 'AEST-10AEDT-11,M10.5.0,M3.5.0'
>>> time.tzset()
>>> time.strftime('%X %x %Z')
'16:08:12 05/08/03 AEST'

Во многих системах Unix (включая *BSD, Linux, Solaris и Darwin) удобнее использовать системную базу данных zoneinfo (tzfile(5)) для указания правил часового пояса. Для этого задаётся для переменной среды TZ путь к требуемому файлу данных часового пояса относительно корня системной базы данных часовых поясов «zoneinfo», обычно расположенной по адресу /usr/share/zoneinfo. Например, 'US/Eastern', 'Australia/Melbourne', 'Egypt' или 'Europe/Amsterdam'.

>>> os.environ['TZ'] = 'US/Eastern'
>>> time.tzset()
>>> time.tzname
('EST', 'EDT')
>>> os.environ['TZ'] = 'Egypt'
>>> time.tzset()
>>> time.tzname
('EET', 'EEST')

Константы идентификатора часов

Данные константы используются в качестве параметров для clock_getres() и clock_gettime().

time.CLOCK_BOOTTIME

Идентичен CLOCK_MONOTONIC, за исключением того, что он также включает время приостановки работы системы.

Это позволяет приложениям получать монотонные часы с возможностью приостановки без необходимости иметь дело с осложнениями CLOCK_REALTIME, которые могут иметь разрывы, если время изменяется с помощью settimeofday() или аналогичного.

Доступность: Linux 2.6.39 или позже.

Добавлено в версии 3.7.

time.CLOCK_HIGHRES

У ОС Solaris есть таймер CLOCK_HIGHRES, который пытается использовать оптимальный аппаратный источник и может давать разрешение, близкое к наносекундам. CLOCK_HIGHRES — нерегулируемые часы с высоким разрешением.

Доступность: Solaris.

Добавлено в версии 3.3.

time.CLOCK_MONOTONIC

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

Доступность: Unix.

Добавлено в версии 3.3.

time.CLOCK_MONOTONIC_RAW

Аналогичен CLOCK_MONOTONIC, но предоставляет доступ к необработанному аппаратному времени, которое не подлежит настройке NTP.

Доступность: Linux 2.6.28 и новее, macOS 10.12 и новее.

Добавлено в версии 3.3.

time.CLOCK_PROCESS_CPUTIME_ID

Таймер высокого разрешения для каждого процесса от ЦПУ.

Доступность: Unix.

Добавлено в версии 3.3.

time.CLOCK_PROF

Таймер высокого разрешения для каждого процесса от ЦПУ.

Доступность: FreeBSD, NetBSD 7 или новее, OpenBSD.

Добавлено в версии 3.7.

time.CLOCK_THREAD_CPUTIME_ID

Часы процессорного времени, зависящие от потока.

Доступность: Unix.

Добавлено в версии 3.3.

time.CLOCK_UPTIME

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

Доступность: FreeBSD, OpenBSD 5.5 или новее.

Добавлено в версии 3.7.

time.CLOCK_UPTIME_RAW

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

Доступность: macOS 10.12 и новее.

Добавлено в версии 3.8.

Следующая константа является единственным параметром, который можно отправить в clock_settime().

time.CLOCK_REALTIME

Общесистемные часы реального времени. Установка данных часов требует соответствующих привилегий.

Доступность: Unix.

Добавлено в версии 3.3.

Константы часового пояса

time.altzone

Смещение местного часового пояса летнего времени в секундах к западу от UTC, если оно определено. Это отрицательно, если местный часовой пояс DST находится восточнее UTC (как в Западной Европе, включая Великобританию). Используйте это, только если daylight отличен от нуля. См. примечание ниже.

time.daylight

Ненулевое значение, если определён часовой пояс DST. См. примечание ниже.

time.timezone

Смещение местного (не летнего) часового пояса в секундах к западу от UTC (отрицательное значение в большинстве стран Западной Европы, положительное значение в США, ноль в Великобритании). См. примечание ниже.

time.tzname

Кортеж из двух строк: первая — это имя местного часового пояса, отличного от летнего времени, вторая — имя локального часового пояса летнего времени. Если часовой пояс DST не определён, вторую строку использовать не следует. См. примечание ниже.

Примечание

Для вышеуказанных констант часового пояса (altzone, daylight, timezone и tzname) значение определяется правилами часового пояса, действующими во время загрузки модуля или при последнем вызове tzset(), и может быть неверным для времени в прошлом. Для получения информации о часовом поясе рекомендуется использовать результаты tm_gmtoff и tm_zone из localtime().

См.также

Модуль datetime
Более объектно-ориентированный интерфейс для дат и времени.
Модуль locale
Службы интернационализации. Настройка локали влияет на интерпретацию многих спецификаторов формата в strftime() и strptime().
Модуль calendar
Общие функции, связанные с календарем. timegm() — это инверсия gmtime() из этого модуля.

Сноски

[1]Использование %Z теперь не рекомендуется, но экранирование %z, которое расширяется до предпочтительное смещение час/минута поддерживается не всеми библиотеками ANSI C. Также строгое прочтение исходного стандарта RFC 822 1982 года требует двузначного числа год (%y, а не %Y), но практика перешла на 4-значные годы задолго до 2000 год. После этого RFC 822 устарел, и год стал четырехзначным сначала было рекомендовано RFC 1123, а затем предписано RFC 2822.