dict(win32timezone.TimeZoneInfo._get_indexed_time_zone_keys())
準確地返回我需要從當前語言環境名稱到英文名稱的映射。下面的代碼解決它:
import win32timezone
win32tz_name = win32timezone.TimeZoneInfo.local().timeZoneName
win32timezone_to_en = dict(win32timezone.TimeZoneInfo._get_indexed_time_zone_keys())
win32timezone_name_en = win32timezone_to_en.get(win32tz_name, win32tz_name)
olsen_name = win32timezones.get(win32timezone_name_en, None)
if not olsen_name:
raise ValueError(u"Could not map win32 timezone name %s (English %s) to Olsen timezone name" % (win32tz_name, win32timezone_name_en))
return pytz.timezone(olsen_name)
這將是很好,如果這是在win32timezone.TimeZoneInfo
對象訪問,雖然,而不必調用私有方法。
似乎GetDynamicTimeZoneInformation返回'TimeZoneKeyName'中的註冊表項,然後可以根據需要映射到英文名稱上。如果可能的話,這似乎是更穩定的方法,因爲在多語言系統上,自XP SP3以來,標準名稱在當前語言環境中返回 - 請參閱http://msdn.microsoft.com/en-us/library/ms724253% 28V = VS.85%29.aspx – 2011-08-22 07:51:49