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