Как получить объект tz_info, соответствующий текущему часовому поясу?

Существует ли кросс-платформенная функция в python (или pytz ), которая возвращает объект tzinfo соответствующий tzinfo в настоящее время на компьютере?

переменные среды не могут учитываться, поскольку они не являются межплатформенными

7 Solutions collect form web for “Как получить объект tz_info, соответствующий текущему часовому поясу?”

 >>> import datetime >>> today = datetime.datetime.now() >>> insummer = datetime.datetime(2009,8,15,10,0,0) >>> from pytz import reference >>> localtime = reference.LocalTimezone() >>> localtime.tzname(today) 'PST' >>> localtime.tzname(insummer) 'PDT' >>> 

tzlocal модуль, который возвращает pytz timezones работает на * nix и win32:

 from datetime import datetime from tzlocal import get_localzone # $ pip install tzlocal # get local timezone local_tz = get_localzone() print local_tz.localize(datetime(2012, 1, 15)) # -> 2012-01-15 00:00:00+04:00 # current utc offset print local_tz.localize(datetime(2000, 1, 15)) # -> 2000-01-15 00:00:00+03:00 # past utc offset (note: +03 instead of +04) print local_tz.localize(datetime(2000, 6, 15)) # -> 2000-06-15 00:00:00+04:00 # changes to utc offset due to DST 

Примечание: в нем учитываются изменения DST и не-DST utc offset.

Этот следующий фрагмент кода возвращает время в другом часовом поясе, независимо от часового пояса, настроенного на сервере.

 # pip install pytz tzlocal from tzlocal import get_localzone from datetime import datetime from pytz import timezone local_tz = get_localzone() local_datetime = datetime.now(local_tz) zurich_tz = timezone('Europe/Zurich') zurich_datetime = zurich_tz.normalize(local_datetime.astimezone(zurich_tz)) 

time.timezone возвращает текущее смещение часового пояса. есть также datetime.tzinfo , если вам нужна более сложная структура.

Я не использовал его сам, но dateutil.tz.tzlocal () должен сделать трюк.

http://labix.org/python-dateutil#head-50221b5226c3ccb97daa06ea7d9abf0533ec0310

Возможно, попробуйте:

import time

print time.tzname #or time.tzname[time.daylight]

Я спрашивал об этом сам, и я нашел ответ в [1]:

Взгляните на раздел 8.1.7: формат «% z» (строчный регистр, верхний регистр Z возвращает также часовой пояс, но не в 4-значном формате, а в виде сокращений временных зон, как в [3]), strftime возвращает форму «+/- 4DIGIT», которая является стандартной в заголовках электронной почты (см. раздел 3.3 RFC 2822, см. [2], в котором устаревают другие способы указания часового пояса для заголовков электронной почты).

Итак, если вы хотите использовать часовой пояс в этом формате, используйте:

 time.strftime("%z") 

[1] http://docs.python.org/2/library/datetime.html

[2] http://tools.ietf.org/html/rfc2822#section-3.3

[3] Сокращения временной зоны: http://en.wikipedia.org/wiki/List_of_time_zone_abbreviations , только для справки.

  • Как установить часовой пояс в Django?
  • datetime: преобразование из строки с именем часового пояса не работает
  • Из часового пояса и времени UTC получите разницу в секундах по местному времени в этот момент времени
  • Как обрабатывать время с часовым поясом в Matplotlib?
  • Как добавить часовой пояс в наивный экземпляр datetime в python
  • Вставить tzinfo в datetime
  • Изменение часового пояса по существующему проекту Django
  • Как разбирать str (my_datetime) с помощью strptime?
  • Как получить общее имя для часового пояса pytz, например. EST / EDT для Америки / New_York
  • Сохранение даты и времени в Django, основанный на часовом поясе объекта
  • Почему% z не поддерживается strptime python?
  • Python - лучший язык программирования в мире.