import time time.tzset()
Функция tzset()
модуля time
сбрасывает правила преобразования времени, используемые библиотечными процедурами. Переменная окружения TZ
определяет, как это делается.
Также будут установлены переменные time.tzname
из переменной окружения TZ
, time.timezone
без DST секунд к западу от UTC, time.altzone
DST секунд к западу от UTC и time.daylight
в 0, если этот часовой пояс не имеет правил перехода на летнее время или ненулевой, когда применяется летнее время.
Доступность: Unix.
Примечание:
TZ
может повлиять на вывод таких функций, как time.localtime()
без вызова time.tzset()
, на это поведение не следует полагаться.Стандартный формат переменной среды TZ (пробелы добавлены для ясности):
std offset [dst [offset [,start[/time], end[/time]]]]
std
и dst
- три или более буквенно-цифровых символов, обозначающих сокращения часового пояса. Они будут выводится в time.tzname
offset
- смещение, имеет вид: ± hh[:mm[:ss]]
. Это указывает на добавленное значение к местному времени, требуемое для прибытия в UTC. Если значению предшествует ‘-‘
, то часовой пояс находится к востоку от гринвича, в противном случае это запад. Если после dst
нет смещения, предполагается, что летнее время на один час опережает стандартное время.start[/time]
, end[/time]
- указывает, когда переходить на летнее время и обратно. Формат даты начала и окончания является одним из следующих:Jn
- юлианский день n (1 <= n <= 365). Високосные дни не учитываются, поэтому во всех годах 28 февраля - день 59, а 1 марта - день 60.n
- начинающийся с нуля юлианский день (0 <= n <= 365). Високосные дни считаются и на 29 февраля можно сослаться.Mm.n.d
- день d
(0 <= d <= 6) недели n
месяца m
года (1 <= n <= 5, 1 <= m <= 12, где неделя 5 означает "последний день d
месяца m
", который может произойти либо на четвертой, либо на пятой неделе. 1-я неделя - это первая неделя, когда наступает день d
. День ноль - воскресенье.Время имеет тот же формат, что и смещение, за исключением того, что ведущий знак ‘-‘
или ‘+’
не допускается. По умолчанию, если время не указано - это 02:00:00.
>>> import time, os >>> os.environ['TZ'] = 'EST+05EDT,M4.1.0,M10.5.0' >>> time.tzset() >>> time.strftime('%X %x %Z') # '06:07:18 04/25/20 EDT' >>> os.environ['TZ'] = 'AEST-10AEDT-11,M10.5.0,M3.5.0' >>> time.tzset() >>> time.strftime('%X %x %Z') # '20:06:52 04/25/20 AEST'
Во многих системах Unix, включая *BSD, Linux, Solaris и Darwin удобнее использовать базу данных systeminfo
системы tzfile
для определения правил часовых поясов. Для этого задайте в переменной среды TZ
путь к необходимому файлу данных часового пояса относительно корня базы данных системного часового пояса zoneinfo
, обычно расположенной в каталоге /usr/share/zoneinfo
.
Например 'Europe/Moscow'
, 'US/Eastern'
, 'Australia/Melbourne'
или 'Egypt'
>>> import time, os >>> os.environ['TZ'] = 'US/Eastern' >>> time.tzset() >>> time.tzname # ('EST', 'EDT') >>> os.environ['TZ'] = 'Egypt' >>> time.tzset() >>> time.tzname # ('EET', 'EEST') >>> os.environ['TZ'] = 'Europe/Moscow' >>> time.tzset() >>> time.tzname # ('MSK', 'MSK') >>> time.strftime('%X %x %Z') # '13:10:53 04/25/20 MSK'