2014-01-07 127 views
0

這是我設置的tzinfo。Python的tzinfo引用文件

tz = {'CST' : -6*3600, 'BST' : +1*3600, 'EST' :-5*3600,'MST':-7*3600,'PST':-8*3600, 'CDT' :-5*3600, 'EDT' : -4*3600, 'PDT':-7*3600} 

dt = parser.parse(date,default = DEFAULT_DATE, tzinfos=tz) 

我想寫所有美國和歐洲時區tz。我不想手動做。有沒有辦法讓這個過程自動化。

回答

0

使用pytz包:當前不活動時區

tzinfos = {} 
for timezone in pytz.all_timezones: 
    if timezone.startswith(("Europe", "US")): 

     tz = pytz.timezone(timezone) 
     start = datetime(2013, 1, 1) 
     # loop over the whole year to catch daylight savings, got to be a better way 
     for days_delta in range(356): 
      d_time = tz.normalize((start + timedelta(days=days_delta)).replace(tzinfo=tz)) 
      tzinfos[d_time.tzname()] = d_time.utcoffset().total_seconds() 
print tzinfos 

正確處理就留給讀者自己練習。

+0

謝謝。我很抱歉,但我只是一個初學者。我應該如何構建字典? – blackmamba

+0

當我寫: a = datetime.datetime.now(tm) 打印a.utcoffset() 給我輸出-1天,19:00:00 我應該如何將其轉換爲我在我的問題中指定的格式像'CST': - 6 * 3600 – blackmamba

+0

我編輯了我的帖子。使用datetime#total_seconds()方法。 –