SystemEvent.TimeChange, показывающий в то же время даже изменения часового пояса - PullRequest
8 голосов
/ 22 сентября 2011

Я написал это простое консольное приложение, чтобы проверить, когда мы вручную изменяем часовой пояс в Windows 7, используя окно даты и времени, независимо от того, запущено событие timechange или нет? Ответ - ДА, это сработало, но я печатаю текущее время, которое не отображается должным образом.

    static void Main(string[] args)
    {
        SystemEvents.TimeChanged += new EventHandler(SystemEvents_TimeChanged);
        Console.Read();
    }

    static void SystemEvents_TimeChanged(object sender, EventArgs e)
    {
        Console.WriteLine(DateTime.Now);
    }

Когда вы запускаете консольное приложение и затем пытаетесь изменить часовой пояс, оно всегда отражает одно временное изменение, но затем оно каким-то образом привязывается к этому времени, даже если вы измените часовой пояс на другой часовой пояс или же.

Я что-то упустил?

чтобы проверить, изменилось ли системное время или нет, я открыл командную строку и использую команду даты и времени, чтобы напечатать текущее время, которое отображается идеально в соответствии с часовым поясом.

Ответы [ 2 ]

11 голосов
/ 22 сентября 2011

Я считаю, что системный часовой пояс кэшируется.Вы можете очистить этот кеш, хотя:

TimeZoneInfo.ClearCachedData();

Поместите это непосредственно перед вашим вызовом DateTime.Now, и похоже, что он работает нормально.(Все равно работает на моей машине:)

РЕДАКТИРОВАТЬ: Как отмечается в комментариях, кажется, что в некоторых случаях вам также необходимо позвонить CultureInfo.CurrentCulture.ClearCachedData().Я не сделал, но я смею сказать, что это не повредит:)

0 голосов
/ 22 сентября 2011

Глупый вопрос, а вы меняете время или просто часовой пояс ? 5:00 - 5:00, тот факт, что вы изменили часовой пояс (и, соответственно, «переместили» компьютер на час или два вперед или назад), не изменит тот факт, что системные часы установлены на 5:00.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...