Получить название Olson TZ для местного часового пояса? - PullRequest
48 голосов
/ 06 октября 2011

Как мне получить имя часового пояса Олсона (например, Australia/Sydney), соответствующее значению, данному вызовом C's localtime?

Этозначение переопределяется через TZ, с помощью символической ссылки /etc/localtime или путем установки переменной TIMEZONE в файлах конфигурации системы, связанных со временем.

Ответы [ 11 ]

0 голосов
/ 17 апреля 2012

Я предпочитаю следовать немного лучше, чем копаться в значениях _xxx

import time, pytz, os

cur_name=time.tzname
cur_TZ=os.environ.get("TZ")

def is_current(name):
   os.environ["TZ"]=name
   time.tzset()
   return time.tzname==cur_name

print "Possible choices:", filter(is_current, pytz.all_timezones)

# optional tz restore
if cur_TZ is None: del os.environ["TZ"]
else: os.environ["TZ"]=cur_TZ
time.tzset()
...