Как получить часовой пояс 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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