SystemEvent.TimeChange показывает то же время даже изменения часового пояса
Я написал Это простое консольное приложение, чтобы проверить, когда мы меняем часовой пояс вручную в 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);
}
Как только вы запустите консольное приложение, а затем попробуйте изменить часовой пояс, он всегда отражает одно изменение времени, но затем он каким-то образом застрял в это время, даже если вы измените часовой пояс на другой часовой пояс или тот же.
Я что-то пропустила?
чтобы проверить, изменилось ли системное время или нет, я открыл командную строку и использую команду date и "time" для печати текущего времени, которое показывает идеальное время в соответствии с часовым поясом.
2 ответов
Я считаю, что системный часовой пояс кэшируется. Вы можете очистить этот кэш, хотя:
TimeZoneInfo.ClearCachedData();
поставь перед DateTime.Now
вызов, и похоже, что он работает нормально. (Работает на моей машине, во всяком случае :)
EDIT: как отмечено в комментариях, похоже, что в некоторые случаи вам также нужно позвонить CultureInfo.CurrentCulture.ClearCachedData()
. Я этого не делал, но осмелюсь сказать, что это не повредит:)
глупый вопрос, но вы меняете времени, или просто часовой пояс? 5: 00 - это 5:00, тот факт, что вы изменили часовой пояс (и по расширению "переместили" компьютер на час или два вперед или назад), не изменит тот факт, что системные часы установлены на 5: 00.