Какова эквивалентность в C# TimeZone.getDefault(). GetID() в Java?

Для одного живущего в республике Молоссия, следующий код на Java:

String TimeZoneId=TimeZone.getDefault().getID();
System.out.println(TimeZoneId);

может выводить с

Америка /Regina

Я гуглил, но не нашел эквивалентности в C#. Результат в TimeZoneInfo.GetSystemTimeZones() не похоже на идентификатор в TZDB.

Есть ли эквивалентный способ?

3 ответа

Решение

.Net не поддерживает TZDB, потому что у Microsoft есть собственная база данных часовых поясов. Смотрите тэги TimeZone вики для деталей.

Если вы хотите работать с зонами TZDB, используйте библиотеку NodaTime. Точный перевод того, что вы спросили:

using NodaTime;

...

var timeZoneId = DateTimeZoneProviders.Tzdb.GetSystemDefault().Id;
Console.WriteLine(timeZoneId);

Аналогичное значение возвращает

      Calendar.GetTimeZone

для получения дополнительной информации: https://docs.microsoft.com/en-us/uwp/api/windows.globalization.calendar.gettimezone?view=winrt-20348

Обычно это можно сделать с помощью класса TimeZone. Это самое близкое, что вы получите с родными библиотеками из моего понимания. Зачем вам нужен этот конкретный результат?

Посмотрите на часовые пояса Microsoft и Таблицу конверсий * для Windows Equivalent, поскольку Windows не полностью поддерживает TZID, посмотрите вопрос переполнения стека ниже для получения дополнительной информации. Я надеюсь, что это более полезно, так как я неправильно понял ваш предыдущий вопрос!!! - извиняюсь!

//Get A reference to our timezone object
TimeZone t = TimeZone.CurrentTimeZone;

//Print out the display name
Console.WriteLine(t.StandardName);

MSDN ССЫЛКА

http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/zone_tzid.html

Пожалуйста, обратитесь к этому предыдущему вопросу stackru .NET TimeZoneInfo из часового пояса Олсона

Другие вопросы по тегам