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()возвращает наиболее точное доступное время (используя Unixgettimeofday(), если эта функция доступна), аsleep()принимает время с ненулевой дробной частью (для этого используется Unixselect(), если эта функция доступна). -
Значение времени, возвращаемое функциями
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_timetm_gmtoffиtm_zoneтеперь доступны на всех платформах. -
Для преобразования между представлениями времени используйте следующие функции:
Из
В
Использовать
секунды с начала эпохи
struct_timeв UTCсекунды с начала эпохи
struct_timeв местное времяstruct_timeв UTCсекунды с начала эпохи
struct_timeв местное времясекунды с начала эпохи
Функции
-
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 часы теперь являются общими для всех процессов.
- В Windows вызываются
-
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]). Первая неделя года — это неделя, на которую приходится первый четверг года. Недели начинаются в понедельник.
%%Буквальный символ
'%'.Примечания:
- Директива формата
%fприменяется только к функцииstrptime(), но не кstrftime(). Однако см. такжеdatetime.datetime.strptime()иdatetime.datetime.strftime(), где директива формата%fприменяется к микросекундам. - При использовании с функцией
strptime()директива%pвлияет на выходное поле часа только в том случае, если для разбора часа используется директива%I.
- Фактический диапазон — от
0до61; значение60допустимо для временных меток, представляющих високосные секунды, а значение61поддерживается по историческим причинам. - При использовании с функцией
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. - В Windows вызывается
Изменено в версии 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().
См. также
-
Moduledatetime -
Более объектно-ориентированный интерфейс для работы с датами и временем.
-
Modulelocale -
Средства интернационализации. Настройка локали влияет на интерпретацию многих спецификаторов формата в функциях
strftime()иstrptime(). -
Modulecalendar -
Функции общего назначения для работы с календарями. Функция
timegm()является обратной кgmtime()из этого модуля.
Сноски
© 2001 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.14/library/time.html