检测DST当前是否已启用

我需要找到一种简单的方法来了解本地计算机是否启用了“自动调整夏令时的时钟”选项。 如果选项打开,我需要知道它当前是否已应用(即它是否是当前系统中的DST)。 提前致谢

您可以找到当前系统默认时区以及当前是否正在使用DST(夏令时)(.NET 3.5以上版本):

TimeZoneInfo zone = TimeZoneInfo.Local; if (zone.SupportsDaylightSavingTime) { Console.WriteLine("System default zone uses DST..."); Console.WriteLine("In DST? {0}", zone.IsDaylightSavingTime(DateTime.UtcNow)); } else { Console.WriteLine("System default zone does not use DST."); } 

另一个选项可能是DateTime.IsDaylightSavingTime方法。 检查MSDN 。

 if (DateTime.Now.IsDaylightSavingTime())  Console.WriteLine("Daylight Saving"); else  Console.WriteLine("No Daylight Saving"); 

您可以阅读注册表以确定是否选中了复选框。 读这把钥匙,

HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ TimeZoneInformation DynamicDaylightTimeDisabled

= 0或1(禁用)

所以类似于:

  Dim retval As Object = Microsoft.Win32.Registry.GetValue("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation", "DynamicDaylightTimeDisabled", 0) If retval IsNot Nothing Then Select Case CInt(retval) Case 0 Trace.WriteLine("Automatically adjust clock for Daylight Saving Time is checked") Case 1 Trace.WriteLine("Automatically adjust clock for Daylight Saving Time is NOT checked") End Select End If 

这是C#中的另一个例子

 private static bool IsDayLightSavingsEnabled() { try { var result = Registry.GetValue(@"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation", "DynamicDaylightTimeDisabled", 1); return !Convert.ToBoolean(result); //0 - Checked/enabled, 1 - Unchecked/disabled } catch { } return false; }