У меня есть странная проблема, которую я не могу решить. Когда я вызываю TimeZoneInfo.GetSystemTimeZones
на свою машину Win 7 x64, я получаю 101 результат. Когда я вызываю TimeZoneInfo.FindSystemTimeZoneById
на каждом из них и передаю атрибут StandardName объекта TimeZoneInfo, 3 из них вызывают TimeZoneNotFoundException.
Здесь пример:
var tzs = TimeZoneInfo.GetSystemTimeZones();
foreach (var timeZoneInfo in tzs.OrderBy(t => t.BaseUtcOffset))
{
try
{
TimeZoneInfo.FindSystemTimeZoneById(timeZoneInfo.StandardName);
}
catch (TimeZoneNotFoundException)
{
Console.WriteLine(timeZoneInfo.DisplayName + "|" + timeZoneInfo.StandardName + "|" + timeZoneInfo.BaseUtcOffset);
}
}
Console.ReadLine();
У этого есть проблемы с поиском "Скоординированное всеобщее время", "Стандартное время в Иерусалиме" и "Стандартное время полуострова Малай". Принимая такой случай, как Малайзия, я могу видеть запись для него, когда я просматриваю доступные часовые пояса в своих региональных настройках, хотя он показывает атрибут DisplayName, а не стандартное имя:
Однако я не могу видеть это под любым именем при просмотре реестра в HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones
Что здесь происходит? Почему часовое поясе Малайзии не может быть загружено по имени?
Пожалуйста, не используйте альтернативные варианты создания часовых поясов с использованием других библиотек. Сейчас я просто хочу разобраться в этом вопросе. Спасибо!