Определить, включен ли DST в данный момент - PullRequest
4 голосов
/ 30 марта 2012

Мне нужно найти простой способ узнать, включена ли опция «автоматически настраивать часы на летнее время» на локальной машине. Если опция включена, мне нужно знать, применяется ли она в данный момент (то есть в настоящее время это DST в системе). Заранее спасибо

Ответы [ 4 ]

7 голосов
/ 30 марта 2012

Вы можете найти текущий системный часовой пояс по умолчанию и использует ли он в настоящее время летнее время (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.");
}
2 голосов
/ 30 марта 2012

Другим вариантом может быть DateTime.IsDaylightSavingTime метод.Проверьте MSDN .

if (DateTime.Now.IsDaylightSavingTime())
    Console.WriteLine("Daylight Saving");
else
    Console.WriteLine("No Daylight Saving");
1 голос
/ 18 апреля 2016

Вот еще один пример в 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;
}
1 голос
/ 30 марта 2012

Вы можете прочитать реестр, чтобы определить, установлен флажок или нет.Прочтите этот ключ,

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...