我需要找到一种简单的方法来了解本地计算机是否启用了“自动调整夏令时的时钟”选项。 如果选项打开,我需要知道它是否当前应用(即它是否是系统中的DST)。 提前致谢
答案 0 :(得分:7)
您可以找到当前系统默认时区以及当前是否正在使用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.");
}
答案 1 :(得分:2)
另一种选择可能是DateTime.IsDaylightSavingTime
方法。检查MSDN。
if (DateTime.Now.IsDaylightSavingTime())
Console.WriteLine("Daylight Saving");
else
Console.WriteLine("No Daylight Saving");
答案 2 :(得分:1)
您可以阅读注册表以确定是否选中了复选框。 阅读此密钥,
HKEY_LOCAL_MACHINE \ SYSTEM \ CURRENTCONTROLSET \控制\ 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
答案 3 :(得分:1)
这是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;
}