time — Время доступа и конверсии


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

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

Необходимо пояснить некоторые термины и условные обозначения.

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

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

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

time.clock_getres(clk_id)

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

Availability: Unix.

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

time.clock_gettime(clk_id) → float

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

Availability: Unix.

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

time.clock_gettime_ns(clk_id) → int

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

Availability: Unix.

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

time.clock_settime(clk_id, time: float)

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

Availability: Unix.

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

time.clock_settime_ns(clk_id, time: int)

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

Availability: 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, когда DST применяется к данному времени.

time.mktime(t)

Это обратная функция localtime(). Его аргументом является struct_time или полный 9-кортеж (так как необходим флаг dst; использовать -1 в качестве флага dst, если он неизвестен), который выражает время в local времени, а не в формате 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 диапазон [1, 12]
2 tm_mday диапазон [1, 31]
3 tm_hour диапазон [0, 23]
4 tm_min диапазон [0, 59]
5 tm_sec диапазон [0, 61]; см. (2) в strftime() описании
6 tm_wday диапазон [0, 6], понедельник 0
7 tm_yday диапазон [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

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

Availability: Windows, Linux, Unix systems supporting 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 (не DST секунд к западу от UTC), altzone (DST секунд к западу от UTC) и daylight (на 0, если в этом часовом поясе нет каких-либо правил перехода на летнее время, или на ненулевое, если есть время, прошлое, настоящее или будущее, когда применяется переход на летнее время).

Availability: 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]

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

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() или аналогичного.

Availability: Linux 2.6.39 or later.

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

time.CLOCK_HIGHRES

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

Availability: Solaris.

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

time.CLOCK_MONOTONIC

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

Availability: Unix.

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

time.CLOCK_MONOTONIC_RAW

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

Availability: Linux 2.6.28 and newer, macOS 10.12 and newer.

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

time.CLOCK_PROCESS_CPUTIME_ID

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

Availability: Unix.

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

time.CLOCK_PROF

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

Availability: FreeBSD, NetBSD 7 или более поздняя версия, OpenBSD.

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

time.CLOCK_THREAD_CPUTIME_ID

Время ЦПУ для конкретного потока.

Availability: Unix.

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

time.CLOCK_UPTIME

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

Availability: FreeBSD, OpenBSD 5.5 or later.

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

time.CLOCK_UPTIME_RAW

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

Availability: macOS 10.12 and newer.

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

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

time.CLOCK_REALTIME

Системные часы реального времени. Для установки этого тактового генератора требуются соответствующие привилегии.

Availability: Unix.

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

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

time.altzone

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

time.daylight

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

time.timezone

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

time.tzname

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

Примечание

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

См.также

Module 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.