2011-02-08 2 views
0

Я использую babel и pytz для получения часовых поясов. Однако для большей части Америки он отображает не что-то полезное в раскрывающемся списке:Лучшее отображение даты и времени python?

«Америка/Нью-Йорк» отображает «Восточное время», «Америка/Нипигон» также отображает «Восточное время».

Есть ли способ сделать это преобразование, чтобы добавить информацию о городе? другие временные зоны кажутся хорошо, как «Азия/Джакарта» обращается в «Индонезия (Джакарта) Время»

ответ

2

Работает для меня с Babel 0.9.5 и pytz 2010b.

py.tz

#!/usr/bin/env python 

import pytz 
import babel.dates 

tz = pytz.timezone('America/New_York') 
print babel.dates.get_timezone_location(tz) 

выход

$ python tz.py 
United States (New York) Time 

Как вы используете его? Какие версии?

Если вы застряли в версиях, которые у вас есть, то почему бы не использовать записи Continent/City?

Вот отправная точка для вас. Он определяет как континент, так и город, поэтому вы можете отформатировать его, как хотите.

tzs.py

#!/usr/bin/env python 

import pytz 
import babel.dates 
import re 

country_timezones = {} 
for (country, tzlist) in pytz.country_timezones.iteritems(): 
    country_name = pytz.country_names[country] 
    cities = [] 
    for timezone in tzlist: 
     # remove continent 
     city = re.sub(r'^[^/]*/', r'', timezone) 
     # Argentina has an extra "Argentina/" on my system (pytz 2010b) 
     city = re.sub(country_name + '/', '', city) 
     # Indiana and North Dakota have different rules by country 
     # change Indiana/Location to Location, Indiana 
     city = re.sub(r'^([^/]*)/(.*)', r'\2, \1', city) 
     # change underscores to spaces 
     city = re.sub(r'_', r' ', city) 
     cities.append(city) 
    country_timezones[country_name] = cities 

for country in sorted(country_timezones): 
    print country 
    for city in sorted(country_timezones[country]): 
     print "\t%s" % (city) 

выход

Aaland Islands 
     Mariehamn 
Afghanistan 
     Kabul 
... 
Indonesia 
     Jakarta 
     Jayapura 
     Makassar 
     Pontianak 
... 
United States 
     Adak 
     Anchorage 
     Boise 
     Center, North Dakota 
     Chicago 
     Denver 
     Detroit 
Смежные вопросы