time.md
1> **Источник:** https://python-all.ru/3.11/library/time.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# [`time`](https://python-all.ru/3.11/library/time.html#module-time) – доступ ко времени и преобразования89---1011Этот модуль предоставляет различные функции для работы со временем. За дополнительной функциональностью обращайтесь к модулям [`datetime`](https://python-all.ru/3.11/library/datetime.html#module-datetime) и [`calendar`](https://python-all.ru/3.11/library/calendar.html#module-calendar).1213Хотя этот модуль доступен всегда, не все функции доступны на всех платформах. Большинство функций, определённых в этом модуле, вызывают одноимённые функции из библиотеки C платформы. Иногда может быть полезно обратиться к документации платформы, так как семантика этих функций различается в разных системах.1415Необходимо пояснить некоторую терминологию и соглашения.1617- *Эпоха (epoch)* – это точка начала отсчёта времени, значение, возвращаемое `time.gmtime(0)`. На всех платформах это 1 января 1970 года, 00:00:00 (UTC).1819- Термин *секунды с начала эпохи* обозначает общее количество прошедших секунд с момента эпохи, обычно без учёта [високосных секунд](https://python-all.ru/3.11/library/time.html). Високосные секунды не включаются в эту сумму на всех платформах, соответствующих POSIX.2021- Функции этого модуля могут не поддерживать даты и время до [эпохи](https://python-all.ru/3.11/library/time.html#epoch) или в далёком будущем. Предельная точка в будущем определяется библиотекой C; для 32-битных систем это обычно 2038 год.2223- Функция [`strptime()`](https://python-all.ru/3.11/library/time.html#time.strptime) может разбирать двузначные года при указании кода формата `%y`. При разборе двузначных годов они преобразуются в соответствии со стандартами POSIX и ISO C: значения 69–99 отображаются на 1969–1999, а значения 0–68 – на 2000–2068.2425- UTC – это Всемирное координированное время (ранее известно как среднее время по Гринвичу, или GMT). Аббревиатура UTC – не ошибка, а компромисс между английским и французским языками.2627- DST – это летнее время, корректировка часового пояса (обычно на один час) в течение части года. Правила DST магические (определяются местным законодательством) и могут меняться от года к году. Библиотека C содержит таблицу с местными правилами (часто она считывается из системного файла для гибкости) и является единственным источником Истинной Мудрости в этом отношении.28- Точность различных функций реального времени может быть ниже, чем предполагают единицы, в которых выражается их значение или аргумент. Например, на большинстве Unix-систем тактовая частота составляет всего 50 или 100 тиков в секунду.29- С другой стороны, точность [`time()`](https://python-all.ru/3.11/library/time.html#time.time) и [`sleep()`](https://python-all.ru/3.11/library/time.html#time.sleep) выше, чем у их Unix-аналогов: время представляется числами с плавающей запятой, [`time()`](https://python-all.ru/3.11/library/time.html#time.time) возвращает самое точное из доступных времён (с использованием Unix `gettimeofday()`, где это возможно), а [`sleep()`](https://python-all.ru/3.11/library/time.html#time.sleep) принимает время с ненулевой дробной частью (для этого, где возможно, используется Unix `select()`).30- Значение времени, возвращаемое [`gmtime()`](https://python-all.ru/3.11/library/time.html#time.gmtime), [`localtime()`](https://python-all.ru/3.11/library/time.html#time.localtime) и [`strptime()`](https://python-all.ru/3.11/library/time.html#time.strptime) и принимаемое [`asctime()`](https://python-all.ru/3.11/library/time.html#time.asctime), [`mktime()`](https://python-all.ru/3.11/library/time.html#time.mktime) и [`strftime()`](https://python-all.ru/3.11/library/time.html#time.strftime), представляет собой последовательность из 9 целых чисел. Возвращаемые значения [`gmtime()`](https://python-all.ru/3.11/library/time.html#time.gmtime), [`localtime()`](https://python-all.ru/3.11/library/time.html#time.localtime) и [`strptime()`](https://python-all.ru/3.11/library/time.html#time.strptime) также предоставляют имена атрибутов для отдельных полей.3132 Описание этих объектов см. в [`struct_time`](https://python-all.ru/3.11/library/time.html#time.struct_time).3334 Изменено в версии 3.3: Тип [`struct_time`](https://python-all.ru/3.11/library/time.html#time.struct_time) был расширен и теперь предоставляет атрибуты [`tm_gmtoff`](https://python-all.ru/3.11/library/time.html#time.struct_time.tm_gmtoff) и [`tm_zone`](https://python-all.ru/3.11/library/time.html#time.struct_time.tm_zone), когда платформа поддерживает соответствующие элементы `struct tm`.3536 Изменено в версии 3.6: Атрибуты [`struct_time`](https://python-all.ru/3.11/library/time.html#time.struct_time) [`tm_gmtoff`](https://python-all.ru/3.11/library/time.html#time.struct_time.tm_gmtoff) и [`tm_zone`](https://python-all.ru/3.11/library/time.html#time.struct_time.tm_zone) теперь доступны на всех платформах.37- Используйте следующие функции для преобразования между представлениями времени:3839 | Из | В | Использовать |40 | --- | --- | --- |41 | секунды с начала эпохи | [`struct_time`](https://python-all.ru/3.11/library/time.html#time.struct_time) в UTC | [`gmtime()`](https://python-all.ru/3.11/library/time.html#time.gmtime) |42 | секунды с начала эпохи | [`struct_time`](https://python-all.ru/3.11/library/time.html#time.struct_time) в местном времени | [`localtime()`](https://python-all.ru/3.11/library/time.html#time.localtime) |43 | [`struct_time`](https://python-all.ru/3.11/library/time.html#time.struct_time) в UTC | секунды с начала эпохи | [`calendar.timegm()`](https://python-all.ru/3.11/library/calendar.html#calendar.timegm) |44 | [`struct_time`](https://python-all.ru/3.11/library/time.html#time.struct_time) в местном времени | секунды с начала эпохи | [`mktime()`](https://python-all.ru/3.11/library/time.html#time.mktime) |4546## Функции4748#### `time.asctime([t])`4950Преобразует кортеж или [`struct_time`](https://python-all.ru/3.11/library/time.html#time.struct_time), представляющий время, возвращённое [`gmtime()`](https://python-all.ru/3.11/library/time.html#time.gmtime) или [`localtime()`](https://python-all.ru/3.11/library/time.html#time.localtime), в строку следующего вида: `'Sun Jun 20 23:21:05 1993'`. Поле дня состоит из двух символов и дополняется пробелом, если день однозначный, например: `'Wed Jun 9 04:26:40 1993'`.5152Если *t* не указан, используется текущее время, возвращаемое [`localtime()`](https://python-all.ru/3.11/library/time.html#time.localtime). Локаль не используется функцией [`asctime()`](https://python-all.ru/3.11/library/time.html#time.asctime).5354> **Примечание**55>56> В отличие от одноимённой функции C, [`asctime()`](https://python-all.ru/3.11/library/time.html#time.asctime) не добавляет завершающий символ новой строки.5758#### `time.pthread_getcpuclockid(thread_id)`5960Возвращает *clk\_id* часов времени ЦП, принадлежащих указанному потоку *thread\_id*.6162Используйте [`threading.get_ident()`](https://python-all.ru/3.11/library/threading.html#threading.get_ident) или атрибут [`ident`](https://python-all.ru/3.11/library/threading.html#threading.Thread.ident) объектов [`threading.Thread`](https://python-all.ru/3.11/library/threading.html#threading.Thread), чтобы получить подходящее значение для *thread\_id*.6364> **Предупреждение**65>66> Передача недопустимого или просроченного *thread\_id* может привести к неопределённому поведению, например к ошибке сегментации.6768[Доступность](https://python-all.ru/3.11/library/intro.html#availability): Unix6970Дополнительную информацию см. в man-странице *[pthread\_getcpuclockid(3)](https://python-all.ru/3.11/library/time.html)*.7172Добавлено в версии 3.7.7374#### `time.clock_getres(clk_id)`7576Возвращает разрешение (точность) указанных часов *clk\_id*. Список допустимых значений для *clk\_id* приведён в [Clock ID Constants](https://python-all.ru/3.11/library/time.html#time-clock-id-constants).7778[Доступность](https://python-all.ru/3.11/library/intro.html#availability): Unix.7980Новое в версии 3.3.8182#### `time.clock_gettime(clk_id) → float`8384Возвращает время указанных часов *clk\_id*. Список допустимых значений для *clk\_id* приведён в [Clock ID Constants](https://python-all.ru/3.11/library/time.html#time-clock-id-constants).8586Используйте [`clock_gettime_ns()`](https://python-all.ru/3.11/library/time.html#time.clock_gettime_ns), чтобы избежать потери точности, вызванной типом [`float`](https://python-all.ru/3.11/library/functions.html#float).8788[Доступность](https://python-all.ru/3.11/library/intro.html#availability): Unix.8990Новое в версии 3.3.9192#### `time.clock_gettime_ns(clk_id) → int`9394Похоже на [`clock_gettime()`](https://python-all.ru/3.11/library/time.html#time.clock_gettime), но возвращает время в наносекундах.9596[Доступность](https://python-all.ru/3.11/library/intro.html#availability): Unix.9798Добавлено в версии 3.7.99100#### `time.clock_settime(clk_id, time: float)`101102Устанавливает время указанных часов *clk\_id*. В настоящее время единственным допустимым значением для *clk\_id* является [`CLOCK_REALTIME`](https://python-all.ru/3.11/library/time.html#time.CLOCK_REALTIME).103104Используйте [`clock_settime_ns()`](https://python-all.ru/3.11/library/time.html#time.clock_settime_ns), чтобы избежать потери точности, вызванной типом [`float`](https://python-all.ru/3.11/library/functions.html#float).105106[Доступность](https://python-all.ru/3.11/library/intro.html#availability): Unix.107108Новое в версии 3.3.109110#### `time.clock_settime_ns(clk_id, time: int)`111112Аналогично [`clock_settime()`](https://python-all.ru/3.11/library/time.html#time.clock_settime), но устанавливает время в наносекундах.113114[Доступность](https://python-all.ru/3.11/library/intro.html#availability): Unix.115116Добавлено в версии 3.7.117118#### `time.ctime([secs])`119120Преобразует время, выраженное в секундах с начала [эпохи](https://python-all.ru/3.11/library/time.html#epoch), в строку вида: `'Sun Jun 20 23:21:05 1993'`, представляющую местное время. Поле дня состоит из двух символов и дополняется пробелом, если день однозначный, например: `'Wed Jun 9 04:26:40 1993'`.121122Если *secs* не указан или равен [`None`](https://python-all.ru/3.11/library/constants.html#None), используется текущее время, возвращаемое [`time()`](https://python-all.ru/3.11/library/time.html#time.time). `ctime(secs)` эквивалентно `asctime(localtime(secs))`. Информация о локали не используется в [`ctime()`](https://python-all.ru/3.11/library/time.html#time.ctime).123124#### `time.get_clock_info(name)`125126Получает информацию об указанных часах в виде объекта пространства имён. Поддерживаемые имена часов и соответствующие функции для чтения их значений:127128- `'monotonic'`: [`time.monotonic()`](https://python-all.ru/3.11/library/time.html#time.monotonic)129- `'perf_counter'`: [`time.perf_counter()`](https://python-all.ru/3.11/library/time.html#time.perf_counter)130- `'process_time'`: [`time.process_time()`](https://python-all.ru/3.11/library/time.html#time.process_time)131- `'thread_time'`: [`time.thread_time()`](https://python-all.ru/3.11/library/time.html#time.thread_time)132- `'time'`: [`time.time()`](https://python-all.ru/3.11/library/time.html#time.time)133134Результат содержит следующие атрибуты:135136- *adjustable*: `True` если часы можно изменить автоматически (например, через NTP-демон) или вручную системным администратором, `False` в противном случае137- *implementation*: Имя нижележащей C-функции, используемой для получения значения часов. Возможные значения описаны в [Clock ID Constants](https://python-all.ru/3.11/library/time.html#time-clock-id-constants).138- *monotonic*: `True`, если часы не могут идти назад, `False` в противном случае139- *resolution*: Разрешение часов в секундах ([`float`](https://python-all.ru/3.11/library/functions.html#float))140141Новое в версии 3.3.142143#### `time.gmtime([secs])`144145Преобразует время, выраженное в секундах с начала [эпохи](https://python-all.ru/3.11/library/time.html#epoch), в [`struct_time`](https://python-all.ru/3.11/library/time.html#time.struct_time) по UTC, в котором флаг dst всегда равен нулю. Если *secs* не указан или равен [`None`](https://python-all.ru/3.11/library/constants.html#None), используется текущее время, возвращаемое [`time()`](https://python-all.ru/3.11/library/time.html#time.time). Доли секунды игнорируются. Описание объекта [`struct_time`](https://python-all.ru/3.11/library/time.html#time.struct_time) см. выше. Для обратного преобразования см. [`calendar.timegm()`](https://python-all.ru/3.11/library/calendar.html#calendar.timegm).146147#### `time.localtime([secs])`148149Как [`gmtime()`](https://python-all.ru/3.11/library/time.html#time.gmtime), но преобразует в местное время. Если *secs* не указан или равен [`None`](https://python-all.ru/3.11/library/constants.html#None), используется текущее время, возвращаемое [`time()`](https://python-all.ru/3.11/library/time.html#time.time). Флаг dst устанавливается в `1`, когда для указанного времени действует летнее время.150151[`localtime()`](https://python-all.ru/3.11/library/time.html#time.localtime) может возбуждать [`OverflowError`](https://python-all.ru/3.11/library/exceptions.html#OverflowError), если метка времени находится за пределами диапазона значений, поддерживаемых функциями C `localtime()` или `gmtime()` платформы, и [`OSError`](https://python-all.ru/3.11/library/exceptions.html#OSError) при сбое `localtime()` или `gmtime()`. Обычно это ограничивается годами между 1970 и 2038.152153#### `time.mktime(t)`154155Это обратная функция для [`localtime()`](https://python-all.ru/3.11/library/time.html#time.localtime). Её аргумент – [`struct_time`](https://python-all.ru/3.11/library/time.html#time.struct_time) или полный 9-кортеж (поскольку требуется флаг dst; если он неизвестен, используйте `-1` в качестве флага dst), который выражает время в *местном* времени, а не UTC. Возвращает число с плавающей запятой для совместимости с [`time()`](https://python-all.ru/3.11/library/time.html#time.time). Если входное значение не может быть представлено как допустимое время, будет возбуждено [`OverflowError`](https://python-all.ru/3.11/library/exceptions.html#OverflowError) или [`ValueError`](https://python-all.ru/3.11/library/exceptions.html#ValueError) (в зависимости от того, перехватывается ли недопустимое значение Python'ом или нижележащими библиотеками C). Самая ранняя дата, для которой может быть сгенерировано время, зависит от платформы.156157#### `time.monotonic() → float`158159Возвращает значение (в долях секунды) монотонных часов, т.е. часов, которые не могут идти назад. На часы не влияют обновления системных часов. Начальная точка отсчёта возвращаемого значения не определена, поэтому допустима только разница между результатами двух вызовов.160161Используйте [`monotonic_ns()`](https://python-all.ru/3.11/library/time.html#time.monotonic_ns), чтобы избежать потери точности, вызванной типом [`float`](https://python-all.ru/3.11/library/functions.html#float).162163Новое в версии 3.3.164165Изменено в версии 3.5: Функция теперь всегда доступна и работает на уровне всей системы.166167Изменено в версии 3.10: В macOS функция теперь общесистемная.168169#### `time.monotonic_ns() → int`170171Аналог [`monotonic()`](https://python-all.ru/3.11/library/time.html#time.monotonic), но возвращает время в наносекундах.172173Добавлено в версии 3.7.174175#### `time.perf_counter() → float`176177Возвращает значение (в долях секунды) счётчика производительности, то есть часов с максимально доступным разрешением для измерения коротких интервалов. Оно учитывает время, проведённое в режиме сна, и является общесистемным. Точка отсчёта возвращаемого значения не определена, поэтому корректна только разница между результатами двух вызовов.178179Используйте [`perf_counter_ns()`](https://python-all.ru/3.11/library/time.html#time.perf_counter_ns), чтобы избежать потери точности, вызванной типом [`float`](https://python-all.ru/3.11/library/functions.html#float).180181Новое в версии 3.3.182183Изменено в версии 3.10: В Windows функция теперь общесистемная.184185#### `time.perf_counter_ns() → int`186187Аналог [`perf_counter()`](https://python-all.ru/3.11/library/time.html#time.perf_counter), но возвращает время в наносекундах.188189Добавлено в версии 3.7.190191#### `time.process_time() → float`192193Возвращает значение (в долях секунды) суммы системного и пользовательского времени ЦП текущего процесса. Оно не включает время, прошедшее во время сна. По определению оно действует в масштабах процесса. Начальная точка отсчёта возвращаемого значения не определена, поэтому допустима только разница между результатами двух вызовов.194195Используйте [`process_time_ns()`](https://python-all.ru/3.11/library/time.html#time.process_time_ns), чтобы избежать потери точности, вызванной типом [`float`](https://python-all.ru/3.11/library/functions.html#float).196197Новое в версии 3.3.198199#### `time.process_time_ns() → int`200201Похоже на [`process_time()`](https://python-all.ru/3.11/library/time.html#time.process_time), но возвращает время в наносекундах.202203Добавлено в версии 3.7.204205#### `time.sleep(secs)`206207Приостанавливает выполнение вызывающего потока на указанное количество секунд. Аргументом может быть число с плавающей запятой для указания более точного времени ожидания.208209Если сон прерван сигналом и обработчик сигнала не возбуждает исключение, сон возобновляется с пересчитанным тайм-аутом.210211Время приостановки может быть больше запрошенного на произвольную величину из-за планирования других действий в системе.212213В Windows, если *secs* равен нулю, поток передаёт остаток своего временного отрезка любому другому потоку, готовому к выполнению. Если нет других готовых к выполнению потоков, функция возвращается немедленно, и поток продолжает выполнение. Начиная с Windows 8.1 и новее в реализации используется [высокоточный таймер](https://python-all.ru/3.11/library/time.html) с разрешением 100 наносекунд. Если *secs* равен нулю, используется `Sleep(0)`.214215Реализация в Unix:216217- Используйте `clock_nanosleep()`, если доступен (разрешение: 1 наносекунда);218- Или используйте `nanosleep()`, если доступен (разрешение: 1 наносекунда);219- Или используйте `select()` (разрешение: 1 микросекунда).220221Изменено в версии 3.5: Теперь функция приостанавливается как минимум на *secs*, даже если прерывание произошло по сигналу, за исключением случаев, когда обработчик сигнала вызывает исключение (см. [**PEP 475**](https://python-all.ru/3.11/library/time.html) для обоснования).222223Изменено в версии 3.11: В Unix теперь используются функции `clock_nanosleep()` и `nanosleep()`, если они доступны. В Windows теперь используется ожидающий таймер.224225#### `time.strftime(format[, t])`226227Преобразует кортеж или [`struct_time`](https://python-all.ru/3.11/library/time.html#time.struct_time), представляющие время, как возвращено [`gmtime()`](https://python-all.ru/3.11/library/time.html#time.gmtime) или [`localtime()`](https://python-all.ru/3.11/library/time.html#time.localtime), в строку, заданную аргументом *format*. Если *t* не указан, используется текущее время, возвращаемое [`localtime()`](https://python-all.ru/3.11/library/time.html#time.localtime). *format* должен быть строкой. [`ValueError`](https://python-all.ru/3.11/library/exceptions.html#ValueError) возбуждается, если любое поле в *t* выходит за допустимый диапазон.2282290 является допустимым аргументом для любой позиции в кортеже времени; если обычно это недопустимо, значение принудительно приводится к корректному.230231В строку *format* могут быть встроены следующие директивы. Они показаны без опциональных спецификаций ширины и точности поля и заменяются указанными символами в результате [`strftime()`](https://python-all.ru/3.11/library/time.html#time.strftime):232233| Директива | Значение | Примечания |234| --- | --- | --- |235| `%a` | Сокращённое название дня недели в соответствии с локалью. | |236| `%A` | Полное название дня недели в соответствии с локалью. | |237| `%b` | Сокращённое название месяца в соответствии с локалью. | |238| `%B` | Полное название месяца в соответствии с локалью. | |239| `%c` | Представление даты и времени, соответствующее локали. | |240| `%d` | День месяца в виде десятичного числа \[01,31\]. | |241| `%f` | Микросекунды в виде десятичного числа\[000000,999999\]. | (1) |242| `%H` | Час (24-часовой формат) в виде десятичного числа \[00,23\]. | |243| `%I` | Час (12-часовой формат) в виде десятичного числа \[01,12\]. | |244| `%j` | День года в виде десятичного числа \[001,366\]. | |245| `%m` | Месяц в виде десятичного числа \[01,12\]. | |246| `%M` | Минута в виде десятичного числа \[00,59\]. | |247| `%p` | Эквивалент AM или PM в соответствии с локалью. | (2) |248| `%S` | Секунда в виде десятичного числа \[00,61\]. | (3) |249| `%U` | Номер недели года (воскресенье – первый день недели) в виде десятичного числа \[00,53\]. Все дни нового года, предшествующие первому воскресенью, считаются неделей 0. | (4) |250| `%w` | День недели в виде десятичного числа \[0(воскресенье),6\]. | |251| `%W` | Номер недели года (понедельник – первый день недели) в виде десятичного числа \[00,53\]. Все дни нового года, предшествующие первому понедельнику, считаются неделей 0. | (4) |252| `%x` | Представление даты, соответствующее локали. | |253| `%X` | Представление времени, соответствующее локали. | |254| `%y` | Год без века в виде десятичного числа \[00,99\]. | |255| `%Y` | Год с веком в виде десятичного числа. | |256| `%z` | Смещение часового пояса, указывающее положительную или отрицательную разницу во времени относительно UTC/GMT в формате +HHMM или -HHMM, где H – десятичные цифры часов, а M – десятичные цифры минут \[-23:59, +23:59\]. [\[1\]](https://python-all.ru/3.11/library/time.html#id4) | |257| `%Z` | Название часового пояса (пустая строка, если часовой пояс отсутствует). Устарело. [\[1\]](https://python-all.ru/3.11/library/time.html#id4) | |258| `%%` | Литеральный символ `'%'`. | |259260Примечания:2612621. Директива формата `%f` применяется только к [`strptime()`](https://python-all.ru/3.11/library/time.html#time.strptime), а не к [`strftime()`](https://python-all.ru/3.11/library/time.html#time.strftime). Однако см. также [`datetime.datetime.strptime()`](https://python-all.ru/3.11/library/datetime.html#datetime.datetime.strptime) и [`datetime.datetime.strftime()`](https://python-all.ru/3.11/library/datetime.html#datetime.datetime.strftime), где директива формата `%f` [применяется к микросекундам](https://python-all.ru/3.11/library/datetime.html#format-codes).2632. При использовании с функцией [`strptime()`](https://python-all.ru/3.11/library/time.html#time.strptime) директива `%p` влияет только на поле вывода часов, если директива `%I` используется для разбора часов.2642653. Диапазон на самом деле от `0` до `61`; значение `60` допустимо в метках времени, представляющих [високосные секунды](https://python-all.ru/3.11/library/time.html), а значение `61` поддерживается по историческим причинам.2664. При использовании с функцией [`strptime()`](https://python-all.ru/3.11/library/time.html#time.strptime), `%U` и `%W` используются в вычислениях только тогда, когда указаны день недели и год.267268Вот пример формата дат, совместимого с указанным в [**RFC 2822**](https://python-all.ru/3.11/library/time.html) стандарте интернет-почты. [\[1\]](https://python-all.ru/3.11/library/time.html#id4)269270```python271>>> from time import gmtime, strftime272>>> strftime("%a, %d %b %Y %H:%M:%S +0000", gmtime())273'Thu, 28 Jun 2001 14:17:15 +0000'274```275276Некоторые платформы могут поддерживать дополнительные директивы, но только перечисленные здесь имеют значение, стандартизированное ANSI C. Полный набор кодов формата, поддерживаемых вашей платформой, можно найти в документации *[strftime(3)](https://python-all.ru/3.11/library/time.html)*.277278На некоторых платформах сразу за начальным символом `'%'` директивы может следовать необязательная спецификация ширины поля и точности в следующем порядке; это также непереносимо. Ширина поля обычно равна 2, за исключением `%j`, где она равна 3.279280#### `time.strptime(string[, format])`281282Разбирает строку, представляющую время, в соответствии с форматом. Возвращаемое значение – это [`struct_time`](https://python-all.ru/3.11/library/time.html#time.struct_time), как возвращается [`gmtime()`](https://python-all.ru/3.11/library/time.html#time.gmtime) или [`localtime()`](https://python-all.ru/3.11/library/time.html#time.localtime).283284Параметр *format* использует те же директивы, что и [`strftime()`](https://python-all.ru/3.11/library/time.html#time.strftime); по умолчанию он равен `"%a %b %d %H:%M:%S %Y"`, что соответствует форматированию, возвращаемому [`ctime()`](https://python-all.ru/3.11/library/time.html#time.ctime). Если *string* не удаётся разобрать в соответствии с *format*, или если после разбора остались лишние данные, возбуждается [`ValueError`](https://python-all.ru/3.11/library/exceptions.html#ValueError). Значения по умолчанию, используемые для заполнения недостающих данных, когда более точные значения не могут быть выведены, это `(1900, 1, 1, 0, 0, 0, 0, 1, -1)`. И *string*, и *format* должны быть строками.285286Например:287288```python289>>> import time290>>> time.strptime("30 Nov 00", "%d %b %y") 291time.struct_time(tm_year=2000, tm_mon=11, tm_mday=30, tm_hour=0, tm_min=0,292 tm_sec=0, tm_wday=3, tm_yday=335, tm_isdst=-1)293```294295Поддержка директивы `%Z` основана на значениях, содержащихся в `tzname`, и на том, является ли `daylight` истинным. Из-за этого она зависит от платформы, за исключением распознавания UTC и GMT, которые всегда известны (и считаются часовыми поясами без перехода на летнее время).296297Поддерживаются только директивы, указанные в документации. Поскольку `strftime()` реализуется на каждой платформе по-своему, он иногда может предлагать больше директив, чем перечислено. Но `strptime()` не зависит от платформы и поэтому не обязательно поддерживает все доступные директивы, которые не задокументированы как поддерживаемые.298299#### `class time.struct_time`300301Тип последовательности значений времени, возвращаемой [`gmtime()`](https://python-all.ru/3.11/library/time.html#time.gmtime), [`localtime()`](https://python-all.ru/3.11/library/time.html#time.localtime) и [`strptime()`](https://python-all.ru/3.11/library/time.html#time.strptime). Это объект с интерфейсом [именованного кортежа](https://python-all.ru/3.11/glossary.html#term-named-tuple): значения могут быть получены по индексу и по имени атрибута. Присутствуют следующие значения:302303| Индекс | Атрибут | Значения |304| --- | --- | --- |305| 0 | tm\_year | (например, 1993) |306| 1 | tm\_mon | диапазон \[1, 12\] |307| 2 | tm\_day | диапазон \[1, 31\] |308| 3 | tm\_hour | диапазон \[0, 23\] |309| 4 | tm\_min | диапазон \[0, 59\] |310| 5 | tm\_sec | диапазон \[0, 61\]; см. [Примечание (2)](https://python-all.ru/3.11/library/time.html#leap-second) в [`strftime()`](https://python-all.ru/3.11/library/time.html#time.strftime) |311| 6 | tm\_wday | диапазон \[0, 6\]; понедельник – 0 |312| 7 | tm\_yday | диапазон \[1, 366\] |313| 8 | tm\_isdst | 0, 1 или -1; см. ниже |314| Н/Д | tm\_zone | аббревиатура названия часового пояса |315| Н/Д | tm\_gmtoff | смещение к востоку от UTC в секундах |316317Обратите внимание, что, в отличие от структуры C, значение месяца находится в диапазоне \[1, 12\], а не \[0, 11\].318319При вызовах [`mktime()`](https://python-all.ru/3.11/library/time.html#time.mktime) флаг [`tm_isdst`](https://python-all.ru/3.11/library/time.html#time.struct_time.tm_isdst) может быть установлен в 1, когда действует летнее время, и в 0, когда нет. Значение -1 указывает, что это неизвестно, и обычно приводит к заполнению правильного состояния.320321Если кортеж неверной длины передаётся функции, ожидающей [`struct_time`](https://python-all.ru/3.11/library/time.html#time.struct_time), или содержит элементы неверного типа, возбуждается [`TypeError`](https://python-all.ru/3.11/library/exceptions.html#TypeError).322323#### `time.time() → float`324325Возвращает время в секундах с [эпохи](https://python-all.ru/3.11/library/time.html#epoch) в виде числа с плавающей запятой. Обработка [високосных секунд](https://python-all.ru/3.11/library/time.html) зависит от платформы. В Windows и большинстве Unix-систем високосные секунды не засчитываются во время в секундах с [эпохи](https://python-all.ru/3.11/library/time.html#epoch). Обычно это называется [Unix-временем](https://python-all.ru/3.11/library/time.html).326327Обратите внимание: хотя время всегда возвращается в виде числа с плавающей запятой, не все системы предоставляют время с точностью лучше 1 секунды. Эта функция обычно возвращает неубывающие значения, но она может вернуть значение меньше предыдущего, если между двумя вызовами системные часы были переведены назад.328329Число, возвращаемое [`time()`](https://python-all.ru/3.11/library/time.html#time.time), может быть преобразовано в более привычный формат времени (т.е. год, месяц, день, час и т.д.) в UTC путём передачи его функции [`gmtime()`](https://python-all.ru/3.11/library/time.html#time.gmtime) или в местное время – функции [`localtime()`](https://python-all.ru/3.11/library/time.html#time.localtime). В обоих случаях возвращается объект [`struct_time`](https://python-all.ru/3.11/library/time.html#time.struct_time), через атрибуты которого можно получить доступ к компонентам календарной даты.330331Используйте [`time_ns()`](https://python-all.ru/3.11/library/time.html#time.time_ns), чтобы избежать потери точности, вызванной типом [`float`](https://python-all.ru/3.11/library/functions.html#float).332333#### `time.time_ns() → int`334335Аналогично [`time()`](https://python-all.ru/3.11/library/time.html#time.time), но возвращает время в виде целого числа наносекунд с начала [эпохи](https://python-all.ru/3.11/library/time.html#epoch).336337Добавлено в версии 3.7.338339#### `time.thread_time() → float`340341Возвращает значение (в долях секунды) суммы системного и пользовательского времени процессора текущего потока. Оно не включает время, проведённое в режиме ожидания (sleep). По определению, это значение привязано к потоку. Точка отсчёта возвращаемого значения не определена, поэтому имеет смысл только разница между результатами двух вызовов в одном и том же потоке.342343Используйте [`thread_time_ns()`](https://python-all.ru/3.11/library/time.html#time.thread_time_ns), чтобы избежать потери точности, вызванной типом [`float`](https://python-all.ru/3.11/library/functions.html#float).344345[Доступность](https://python-all.ru/3.11/library/intro.html#availability): Linux, Unix, Windows.346347Unix-системы, поддерживающие `CLOCK_THREAD_CPUTIME_ID`.348349Добавлено в версии 3.7.350351#### `time.thread_time_ns() → int`352353Похоже на [`thread_time()`](https://python-all.ru/3.11/library/time.html#time.thread_time), но возвращает время в наносекундах.354355Добавлено в версии 3.7.356357#### `time.tzset()`358359Сбрасывает правила преобразования времени, используемые библиотечными процедурами. Переменная окружения `TZ` указывает, как это делается. Она также устанавливает переменные `tzname` (из переменной окружения `TZ`), `timezone` (не-летнее время, секунды к западу от UTC), `altzone` (летнее время, секунды к западу от UTC) и `daylight` (в 0, если часовой пояс не имеет правил перехода на летнее время, или в ненулевое значение, если существует время – прошлое, настоящее или будущее – когда применяется летнее время).360361[Доступность](https://python-all.ru/3.11/library/intro.html#availability): Unix.362363> **Примечание**364>365> Хотя во многих случаях изменение переменной окружения `TZ` может повлиять на результат работы функций, таких как [`localtime()`](https://python-all.ru/3.11/library/time.html#time.localtime), без вызова [`tzset()`](https://python-all.ru/3.11/library/time.html#time.tzset), на такое поведение полагаться не следует.366>367> Переменная окружения `TZ` не должна содержать пробельных символов.368369Стандартный формат переменной окружения `TZ` следующий (пробелы добавлены для наглядности):370371```python372std offset [dst [offset [,start[/time], end[/time]]]]373```374375Где компоненты имеют следующее значение:376377**`std` и `dst`**378379Три или более буквенно-цифровых символа, обозначающие аббревиатуры часовых поясов. Они будут переданы в time.tzname.380381**`offset`**382383Смещение имеет вид: `± hh[:mm[:ss]]`. Оно указывает значение, которое добавляется к местному времени для получения UTC. Если перед ним стоит знак «-», часовой пояс находится к востоку от нулевого меридиана; в противном случае – к западу. Если после летнего времени (dst) не указано смещение, считается, что летнее время опережает стандартное на один час.384385**`start[/time], end[/time]`**386387Указывает, когда переходить на летнее время и обратно. Формат дат начала и окончания – один из следующих:388389**`Jn`**390391Юлианский день *n* (1 \<= *n* \<= 365). Високосные дни не учитываются, поэтому во все годы 28 февраля – день 59, а 1 марта – день 60.392393**`n`**394395Юлианский день с нулевым отсчетом (0 \<= *n* \<= 365). Високосные дни учитываются, и можно указать 29 февраля.396397**`Mm.n.d`**398399*d*-й день (0 \<= *d* \<= 6) недели *n* месяца *m* года (1 \<= *n* \<= 5, 1 \<= *m* \<= 12, где неделя 5 означает «последний *d*-й день в месяце *m*», который может приходиться на четвёртую или пятую неделю). Неделя 1 – это первая неделя, в которой встречается *d*-й день. День ноль – воскресенье.400401Формат `time` совпадает с форматом `offset`, за исключением того, что ведущий знак («-» или «+») не допускается. По умолчанию, если время не указано, используется 02:00:00.402403```python404>>> os.environ['TZ'] = 'EST+05EDT,M4.1.0,M10.5.0'405>>> time.tzset()406>>> time.strftime('%X %x %Z')407'02:07:36 05/08/03 EDT'408>>> os.environ['TZ'] = 'AEST-10AEDT-11,M10.5.0,M3.5.0'409>>> time.tzset()410>>> time.strftime('%X %x %Z')411'16:08:12 05/08/03 AEST'412```413414Во многих Unix-системах (включая \*BSD, Linux, Solaris и Darwin) удобнее использовать системную базу zoneinfo (*[tzfile(5)](https://python-all.ru/3.11/library/time.html)*) для указания правил часового пояса. Для этого установите переменную окружения `TZ` в путь к требуемому файлу данных часового пояса относительно корня системной базы данных часовых поясов «zoneinfo», обычно расположенной по адресу `/usr/share/zoneinfo`. Например, `'US/Eastern'`, `'Australia/Melbourne'`, `'Egypt'` или `'Europe/Amsterdam'`.415416```python417>>> os.environ['TZ'] = 'US/Eastern'418>>> time.tzset()419>>> time.tzname420('EST', 'EDT')421>>> os.environ['TZ'] = 'Egypt'422>>> time.tzset()423>>> time.tzname424('EET', 'EEST')425```426427## Константы идентификаторов часов428429Эти константы используются в качестве параметров для [`clock_getres()`](https://python-all.ru/3.11/library/time.html#time.clock_getres) и [`clock_gettime()`](https://python-all.ru/3.11/library/time.html#time.clock_gettime).430431#### `time.CLOCK_BOOTTIME`432433Идентично [`CLOCK_MONOTONIC`](https://python-all.ru/3.11/library/time.html#time.CLOCK_MONOTONIC), за исключением того, что включает время приостановки системы.434435Это позволяет приложениям получать монотонные часы с учётом приостановки, не сталкиваясь со сложностями [`CLOCK_REALTIME`](https://python-all.ru/3.11/library/time.html#time.CLOCK_REALTIME), которые могут иметь разрывы, если время изменяется с помощью `settimeofday()` или аналогичных средств.436437[Доступность](https://python-all.ru/3.11/library/intro.html#availability): Linux \>= 2.6.39.438439Добавлено в версии 3.7.440441#### `time.CLOCK_HIGHRES`442443ОС Solaris имеет таймер `CLOCK_HIGHRES`, который пытается использовать оптимальный аппаратный источник и может обеспечивать разрешение, близкое к наносекундному. `CLOCK_HIGHRES` – это нерегулируемые часы высокого разрешения.444445[Доступность](https://python-all.ru/3.11/library/intro.html#availability): Solaris.446447Новое в версии 3.3.448449#### `time.CLOCK_MONOTONIC`450451Часы, которые нельзя установить, и которые показывают монотонное время с некоторой неопределённой начальной точки.452453[Доступность](https://python-all.ru/3.11/library/intro.html#availability): Unix.454455Новое в версии 3.3.456457#### `time.CLOCK_MONOTONIC_RAW`458459Похоже на [`CLOCK_MONOTONIC`](https://python-all.ru/3.11/library/time.html#time.CLOCK_MONOTONIC), но предоставляет доступ к «сырому» аппаратному времени, которое не подвержено корректировкам NTP.460461[Доступность](https://python-all.ru/3.11/library/intro.html#availability): Linux \>= 2.6.28, macOS \>= 10.12.462463Новое в версии 3.3.464465#### `time.CLOCK_PROCESS_CPUTIME_ID`466467Высокоточный таймер для каждого процесса, предоставляемый ЦП.468469[Доступность](https://python-all.ru/3.11/library/intro.html#availability): Unix.470471Новое в версии 3.3.472473#### `time.CLOCK_PROF`474475Высокоточный таймер для каждого процесса, предоставляемый ЦП.476477[Доступность](https://python-all.ru/3.11/library/intro.html#availability): FreeBSD, NetBSD \>= 7, OpenBSD.478479Добавлено в версии 3.7.480481#### `time.CLOCK_TAI`482483[Международное атомное время](https://python-all.ru/3.11/library/time.html)484485Система должна содержать актуальную таблицу високосных секунд, чтобы этот таймер выдавал корректный результат. Таблицу високосных секунд может поддерживать программное обеспечение PTP или NTP.486487[Доступность](https://python-all.ru/3.11/library/intro.html#availability): Linux.488489Новое в версии 3.9.490491#### `time.CLOCK_THREAD_CPUTIME_ID`492493Таймер процессорного времени для конкретного потока.494495[Доступность](https://python-all.ru/3.11/library/intro.html#availability): Unix.496497Новое в версии 3.3.498499#### `time.CLOCK_UPTIME`500501Время, абсолютное значение которого равно времени работы системы без приостановок, что позволяет точно измерять время работы (как абсолютное, так и интервальное).502503[Доступность](https://python-all.ru/3.11/library/intro.html#availability): FreeBSD, OpenBSD \>= 5.5.504505Добавлено в версии 3.7.506507#### `time.CLOCK_UPTIME_RAW`508509Часы, монотонно увеличивающиеся, отслеживающие время с произвольной точки, не зависящие от изменений частоты или времени и не увеличивающиеся, пока система находится в спящем режиме.510511[Доступность](https://python-all.ru/3.11/library/intro.html#availability): macOS \>= 10.12.512513Новое в версии 3.8.514515Следующая константа – единственный параметр, который можно передать в [`clock_settime()`](https://python-all.ru/3.11/library/time.html#time.clock_settime).516517#### `time.CLOCK_REALTIME`518519Системные часы реального времени. Установка этих часов требует соответствующих привилегий.520521[Доступность](https://python-all.ru/3.11/library/intro.html#availability): Unix.522523Новое в версии 3.3.524525## Константы часовых поясов526527#### `time.altzone`528529Смещение местного часового пояса с летним временем (DST) в секундах к западу от UTC, если таковой определен. Отрицательное значение, если местный часовой пояс с летним временем находится к востоку от UTC (как в Западной Европе, включая Великобританию). Используйте эту константу, только если `daylight` не равно нулю. См. примечание ниже.530531#### `time.daylight`532533Не равно нулю, если определен часовой пояс с летним временем. См. примечание ниже.534535#### `time.timezone`536537Смещение местного часового пояса (без летнего времени) в секундах к западу от UTC (отрицательное в большей части Западной Европы, положительное в США, нулевое в Великобритании). См. примечание ниже.538539#### `time.tzname`540541Кортеж из двух строк: первая – название местного часового пояса без летнего времени, вторая – название местного часового пояса с летним временем. Если часовой пояс с летним временем не определен, вторая строка не должна использоваться. См. примечание ниже.542543> **Примечание**544>545> Для указанных выше констант часовых поясов ([`altzone`](https://python-all.ru/3.11/library/time.html#time.altzone), [`daylight`](https://python-all.ru/3.11/library/time.html#time.daylight), [`timezone`](https://python-all.ru/3.11/library/time.html#time.timezone), и [`tzname`](https://python-all.ru/3.11/library/time.html#time.tzname)) значение определяется правилами часового пояса, действующими на момент загрузки модуля или последнего вызова [`tzset()`](https://python-all.ru/3.11/library/time.html#time.tzset), и может быть неверным для моментов в прошлом. Рекомендуется использовать результаты [`tm_gmtoff`](https://python-all.ru/3.11/library/time.html#time.struct_time.tm_gmtoff) и [`tm_zone`](https://python-all.ru/3.11/library/time.html#time.struct_time.tm_zone) из [`localtime()`](https://python-all.ru/3.11/library/time.html#time.localtime) для получения информации о часовом поясе.546547> **См. также**548>549> **Модуль [`datetime`](https://python-all.ru/3.11/library/datetime.html#module-datetime)**550>551> Более объектно-ориентированный интерфейс для работы с датами и временем.552>553> **Модуль [`locale`](https://python-all.ru/3.11/library/locale.html#module-locale)**554>555> Службы интернационализации. Настройка локали влияет на интерпретацию многих спецификаторов формата в [`strftime()`](https://python-all.ru/3.11/library/time.html#time.strftime) и [`strptime()`](https://python-all.ru/3.11/library/time.html#time.strptime).556>557> **Модуль [`calendar`](https://python-all.ru/3.11/library/calendar.html#module-calendar)**558>559> Общие функции, связанные с календарём. [`timegm()`](https://python-all.ru/3.11/library/calendar.html#calendar.timegm) является обратной функцией по отношению к [`gmtime()`](https://python-all.ru/3.11/library/time.html#time.gmtime) из этого модуля.560561Сноски562563\[1\]564565([1](https://python-all.ru/3.11/library/time.html#id1),[2](https://python-all.ru/3.11/library/time.html#id2),[3](https://python-all.ru/3.11/library/time.html#id3))566567Использование `%Z` теперь устарело, но escape-последовательность `%z`, которая раскрывается в предпочтительное смещение часов/минут, не поддерживается всеми библиотеками ANSI C. Кроме того, строгое прочтение исходного стандарта [**RFC 822**](https://python-all.ru/3.11/library/time.html) 1982 года требует двузначного года (`%y` вместо `%Y`), но на практике перешли к четырёхзначным годам задолго до 2000 года. После этого [**RFC 822**](https://python-all.ru/3.11/library/time.html) устарел, и четырёхзначный год сначала был рекомендован [**RFC 1123**](https://python-all.ru/3.11/library/time.html), а затем стал обязательным в [**RFC 2822**](https://python-all.ru/3.11/library/time.html).568