Подтвердить что ты не робот

Получить информацию о часовом поясе системы в Python?

Я хочу получить часовой пояс по умолчанию (PST) моей системы с Python. Какой лучший способ сделать это? Я хотел бы избежать разветвления другого процесса.

4b9b3361

Ответ 1

Проверьте модуль времени Python.

from time import gmtime, strftime
print(strftime("%z", gmtime()))

Стандартное тихоокеанское время

Ответ 2

Это должно работать:

import time
time.tzname

time.tzname возвращает кортеж из двух строк: первая - это имя локального часового пояса без DST, вторая - имя локального часового пояса DST.

Пример возврата: ('MST', 'MDT')

Ответ 3

Дает смещение UTC, как в ответе ThomasH, но учитывает летнее время.

>>> import time
>>> offset = time.timezone if (time.localtime().tm_isdst == 0) else time.altzone
>>> offset / 60 / 60 * -1
-9

Значение time.timezone или time.altzone находится в секундах к западу от UTC (с областями к востоку от UTC, получающим отрицательное значение). Это противоположно тому, как нам это на самом деле нравится, следовательно, * -1.

time.localtime().tm_isdst будет равен нулю, если летнее сбережение в настоящее время не действует (хотя это может быть неверным, если область недавно изменила свой закон о летнем свете).

EDIT: marr75 является правильным, я отредактировал ответ соответственно.

Ответ 4

Фрагменты кода для вычисления смещения неверны, см. http://bugs.python.org/issue7229.

Правильный способ справиться с этим:

def local_time_offset(t=None):
    """Return offset of local zone from GMT, either at present or at time t."""
    # python2.3 localtime() can't take None
    if t is None:
        t = time.time()

    if time.localtime(t).tm_isdst and time.daylight:
        return -time.altzone
    else:
        return -time.timezone

Это, по всей вероятности, не точный вопрос, который задал ОП, но на странице есть два неправильных фрагмента, а ошибки времени - отскакивание и исправление.

Ответ 5

Если вы предпочитаете смещения UTC по строкам:

time.timezone / -(60*60)

Ответ 6

Я нашел это работать хорошо:

import datetime
tz_string = datetime.datetime.now(datetime.timezone.utc).astimezone().tzname()

Для меня это было в состоянии различить летнее время и нет.

fooobar.com/info/149452/...