Spec-Zone.ru › Python 3.14

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

Этот модуль предоставляет различные функции, связанные со временем. См. также модули datetime и calendar, предоставляющие связанную функциональность.

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

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

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

    секунды с начала эпохи

    mktime()

Функции

time.asctime([time_tuple])

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

Если time_tuple не задан, используется текущее время, возвращаемое функцией localtime(). Функция asctime() не использует сведения о локали.

Примечание

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

time.pthread_getcpuclockid(thread_id, /)

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

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

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

Передача недопустимого или уже недействительного значения 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 см. в разделе Константы идентификаторов часов.

Используйте clock_gettime_ns(), чтобы избежать потери точности, вызванной типом float.

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

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

time.clock_gettime_ns(clk_id, /) → int

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

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

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

time.clock_settime(clk_id, time: float, /)

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

Используйте clock_settime_ns(), чтобы избежать потери точности, вызванной типом float.

Доступность: Unix, кроме Android и iOS.

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

time.clock_settime_ns(clk_id, time: int, /)

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

Доступность: Unix, кроме Android и iOS.

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

time.ctime(seconds=None, /)

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

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

time.get_clock_info(name, /)

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

  • 'monotonic': time.monotonic()
  • 'perf_counter': time.perf_counter()
  • 'process_time': time.process_time()
  • 'thread_time': time.thread_time()
  • 'time': time.time()

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

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

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

time.gmtime(seconds=None, /)

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

time.localtime(seconds=None, /)

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

Функция localtime() может вызвать OverflowError, если временная метка выходит за пределы диапазона значений, поддерживаемого функциями localtime() или gmtime() платформенной библиотеки C, а также OSError при сбое localtime() или gmtime(). Обычно поддерживаются только годы с 1970 по 2038.

time.mktime(time_tuple, /)

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

time.monotonic() → float

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

Часы:

  • В Windows вызываются QueryPerformanceCounter() и QueryPerformanceFrequency().
  • В macOS вызываются mach_absolute_time() и mach_timebase_info().
  • В HP-UX вызывается gethrtime().
  • Если доступна, вызывается clock_gettime(CLOCK_HIGHRES).
  • В противном случае вызывается clock_gettime(CLOCK_MONOTONIC).

Используйте monotonic_ns(), чтобы избежать потери точности, вызванной типом float.

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

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

Изменено в версии 3.10: В macOS часы теперь являются общими для всех процессов.

time.monotonic_ns() → int

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

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

time.perf_counter() → float

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

Особенность реализации CPython: В CPython используются те же часы, что и в time.monotonic(); это монотонные часы, то есть часы, которые не могут идти назад.

Используйте perf_counter_ns(), чтобы избежать потери точности, вызванной типом float.

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

Изменено в версии 3.10: В Windows часы теперь являются общими для всех процессов.

Изменено в версии 3.13: Используются те же часы, что и в time.monotonic().

time.perf_counter_ns() → int

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

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

time.process_time() → float

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

Используйте process_time_ns(), чтобы избежать потери точности, вызванной типом float.

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

time.process_time_ns() → int

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

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

time.sleep(seconds, /)

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

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

Фактическое время приостановки может произвольно превышать запрошенное из-за планирования других задач в системе.

Реализация в Windows

В Windows, если seconds равно нулю, поток уступает оставшуюся часть своего кванта времени любому другому потоку, готовому к выполнению. Если таких потоков нет, функция немедленно возвращает управление, и поток продолжает выполнение. В Windows 10 и новее используется таймер высокого разрешения с разрешением 100 наносекунд. Если seconds равно нулю, используется Sleep(0).

Реализация в Unix

  • Если доступна, используется clock_nanosleep() (разрешение: 1 наносекунда);
  • иначе, если доступна, используется nanosleep() (разрешение: 1 наносекунда);
  • в противном случае используется select() (разрешение: 1 микросекунда).

Примечание

Чтобы имитировать «пустую операцию», используйте pass вместо time.sleep(0).

Чтобы добровольно освободить процессор, задайте политику планирования реального времени и используйте os.sched_yield().

Вызывает событие аудита time.sleep с аргументом seconds.

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

Изменено в версии 3.11: В Unix теперь используются функции clock_nanosleep() и nanosleep(), если они доступны. В Windows теперь используется таймер ожидания.

Изменено в версии 3.13: Вызывает событие аудита.

time.strftime(format[, time_tuple])

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

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

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

Директива

Значение

Примечания

%a

Сокращённое название дня недели для текущей локали.

%A

Полное название дня недели для текущей локали.

%b

Сокращённое название месяца для текущей локали.

%B

Полное название месяца для текущей локали.

%c

Представление даты и времени, соответствующее текущей локали.

%d

День месяца в виде десятичного числа [01,31].

%f

Микросекунды в виде десятичного числа

[000000,999999].

(1)

%H

Час в 24-часовом формате в виде десятичного числа [00,23].

%I

Час в 12-часовом формате в виде десятичного числа [01,12].

%j

День года в виде десятичного числа [001,366].

%m

Месяц в виде десятичного числа [01,12].

%M

Минута в виде десятичного числа [00,59].

%p

Эквивалент AM или PM для текущей локали.

(2)

%S

Секунда в виде десятичного числа [00,61].

(3)

%U

Номер недели в году (воскресенье считается первым днём недели) в виде десятичного числа [00,53]. Все дни нового года до первого воскресенья считаются неделей 0.

(4)

%u

День недели (понедельник — 1; воскресенье — 7) в виде десятичного числа [1, 7].

%w

День недели в виде десятичного числа [0 (воскресенье), 6].

%W

Номер недели в году (понедельник считается первым днём недели) в виде десятичного числа [00,53]. Все дни нового года до первого понедельника считаются неделей 0.

(4)

%x

Представление даты, соответствующее текущей локали.

%X

Представление времени, соответствующее текущей локали.

%y

Год без указания века в виде десятичного числа [00,99].

%Y

Год с указанием века в виде десятичного числа.

%z

Смещение часового пояса, указывающее положительную или отрицательную разницу со временем UTC/GMT в формате +HHMM или -HHMM, где H — цифры десятичного представления часов, а M — цифры десятичного представления минут [-23:59, +23:59]. [1]

%Z

Название часового пояса (пустая строка, если часовой пояс не задан). Устарела. [1]

%G

Год по ISO 8601 (аналогичен %Y, но следует правилам календарного года ISO 8601). Год начинается с недели, на которую приходится первый четверг календарного года.

%V

Номер недели по ISO 8601 (в виде десятичного числа [01,53]). Первая неделя года — это неделя, на которую приходится первый четверг года. Недели начинаются в понедельник.

%%

Буквальный символ '%'.

Примечания:

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

Пример формата даты, совместимого с форматом, заданным стандартом интернет-почты RFC 5322. [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")
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; см. ниже

Н/Д

tm_zone

аббревиатура названия часового пояса

Н/Д

tm_gmtoff

смещение к востоку от UTC в секундах

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

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

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

time.time() → float

Возвращает время в секундах, прошедших с эпохи, в виде числа с плавающей точкой. Обработка високосных секунд зависит от платформы. В Windows и большинстве систем Unix високосные секунды не учитываются при подсчёте времени в секундах с эпохи. Обычно это называют временем Unix.

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

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

Источник часов:

  • В Windows вызывается GetSystemTimePreciseAsFileTime().
  • Если доступна, вызывается clock_gettime(CLOCK_REALTIME).
  • В противном случае вызывается gettimeofday().

Используйте time_ns(), чтобы избежать потери точности, связанной с типом float.

Изменено в версии 3.13: В Windows вызывается GetSystemTimePreciseAsFileTime() вместо GetSystemTimeAsFileTime().

time.time_ns() → int

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

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

time.thread_time() → float

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

Используйте thread_time_ns(), чтобы избежать потери точности, связанной с типом float.

Доступность: Linux, Unix, Windows.

Системы Unix с поддержкой CLOCK_THREAD_CPUTIME_ID.

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

time.thread_time_ns() → int

Аналогична thread_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 and 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-й день. День 0 — воскресенье.

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_MONOTONIC_RAW_APPROX

Аналогична CLOCK_MONOTONIC_RAW, но считывает значение, сохранённое системой при переключении контекста, и поэтому менее точна.

Доступность: macOS >= 10.12.

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

time.CLOCK_PROCESS_CPUTIME_ID

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

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

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

time.CLOCK_PROF

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

Доступность: FreeBSD, NetBSD >= 7, OpenBSD.

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

time.CLOCK_TAI

Международное атомное время

Чтобы эти часы показывали правильное время, в системе должна быть актуальная таблица високосных секунд. Таблицу високосных секунд могут поддерживать программы PTP или NTP.

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

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

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.

time.CLOCK_UPTIME_RAW_APPROX

Аналогична CLOCK_UPTIME_RAW, но значение кэшируется системой при переключении контекста, поэтому точность ниже.

Доступность: macOS >= 10.12.

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

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

time.CLOCK_REALTIME

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

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

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

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

time.altzone

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

time.daylight

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

time.timezone

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

time.tzname

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

Примечание

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

См. также

Module datetime

Более объектно-ориентированный интерфейс для работы с датами и временем.

Module locale

Средства интернационализации. Настройка локали влияет на интерпретацию многих спецификаторов формата в функциях strftime() и strptime().

Module calendar

Функции общего назначения для работы с календарями. Функция timegm() является обратной к gmtime() из этого модуля.

Сноски

[1] (1,2,3)

Использование %Z теперь считается устаревшим, однако escape-последовательность %z, которая расширяется до предпочтительного смещения в часах и минутах, поддерживается не всеми библиотеками ANSI C. Кроме того, при строгом прочтении исходного стандарта RFC 822 1982 года требуется двузначный год (%y вместо %Y), однако задолго до 2000 года на практике перешли к четырёхзначным годам. После этого RFC 822 устарел, а четырёхзначный год сначала был рекомендован в RFC 1123, а затем стал обязательным требованием в RFC 2822; это требование сохранено и в RFC 5322.

© 2001 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.14/library/time.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API