Как получить часовой пояс IANA на C# без преобразованияC#

Место общения программистов C#
Anonymous
Как получить часовой пояс IANA на C# без преобразования

Сообщение Anonymous »

Когда вы запускаете .NET на компьютерах с Windows, он извлекает информацию о часовом поясе из реестра Windows и, таким образом, использует идентификаторы часовых поясов Windows, а не IANA. Вы можете конвертировать между ними, но рассмотрите следующий код:

Код: Выделить всё

TimeZoneInfo.TryConvertIanaIdToWindowsId("Canada/Eastern", out string temp2);
TimeZoneInfo.TryConvertWindowsIdToIanaId(temp2, out string temp3);
Debug.WriteLine(temp2 ?? "NULL"); //Eastern Standard Time
Debug.WriteLine(temp3 ?? "NULL"); //America/New_York
Преобразование часовых поясов Windows в часовые пояса IANA не является двусторонним. Кажется, существует канонический часовой пояс, на который изменяются часовые пояса кластера Windows (в данном случае Нью-Йорк).
Это не проблема на компьютерах без Windows, поскольку все они используют IANA. но для Windows я не могу получить истинный часовой пояс пользователя IANA. Есть ли какой-нибудь способ обойти это?
Как Windows вообще справляется с этим, если часовые пояса группируются вместе (например, «Америка/Нью-Йорк» и «Канада/Восточное» в «Восточное стандартное время»). ') со временем (или уже) могут быть другие исторические правила перехода на летнее время и еще много чего? Тем не менее, даже если бы они были одинаковыми во всем, кроме имени, я бы хотел каким-то образом получить правильный часовой пояс IANA для машины.

Подробнее здесь: https://stackoverflow.com/questions/727 ... conversion

Вернуться в «C#»