Какова эквивалентность в 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);
http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/zone_tzid.html
Пожалуйста, обратитесь к этому предыдущему вопросу stackru .NET TimeZoneInfo из часового пояса Олсона