W. Aus标准时间的.Net / Windows TimeZoneInfo对象显示它支持夏令时。在澳大利亚政府网站上搜索有关领土遵守夏令时的情况,显示西澳大利亚州于2009年废除了它,因此从2010年到现在及以后没有夏令时。
我在几个系统上检查过TimeZoneInfo对象,他们都说W Aus Standard Time支持dst。他们所有的注册表都具有相同的价值。我检查了Windows更新,但没有找到TimeZoneInfo对象的更新。
任何人都可以解释为什么微软似乎忽视了7年以来更新此对象的原因?我错过了什么吗?
答案 0 :(得分:3)
我相信你看到了这个:
TimeZoneInfo tzi = TimeZoneInfo.FindSystemTimeZoneById("W. Australia Standard Time");
tzi.SupportsDaylightSavingTime == true
SupportsDaylightSavingTime
媒体资源上的the MSDN documentation:
获取一个值,该值指示时区是否具有夏令时规则。
因此,它不告诉您时区目前是否使用夏令时,它会告诉您曾是否已经,至少在简报中Windows时区数据中的时间历史记录。
如果您想知道DST当前是 ,请执行以下操作:
TimeZoneInfo tzi = TimeZoneInfo.FindSystemTimeZoneById("W. Australia Standard Time");
tzi.IsDaylightSavingTime(DateTime.UtcNow) // false
如果您想知道特定年份是否支持它,您可以检查从GetAdjustmentRules
方法返回的调整规则数据。
Windows将时区数据存储在注册表中:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion
\Time Zones\W. Australia Standard Time\Dynamic DST
因此,我们可以看到2005年有一些数据来自注册表。如果仔细观察,您还可以看到2006年到2009年之间的一些变化。This article可以帮助您解释数据,如果您感兴趣的话。
事实上,如果我们检查timeanddate.com(一个非常时区信息的好资源),我们可以看到西澳大利亚确实有从2006年到2009年的夏令时:
最后,我要补充一点,Windows时区服务团队已经非常善于掌握全球时区数据的变化。您可以监控this blog以获取更新。特别是,他们使用the June 2016 update极大地扩展了覆盖面并提高了历史准确性。
对澳大利亚而言,2016年6月更新增加了两个新时区;一个用于豪勋爵岛(UTC + 10:30 STD,UTC + 11:00 DST),另一个用于Eucla附近使用的非正式中西部时间(UTC + 08:45),但任何标准都不需要更正大陆时区。