对于Republic of Molossia中的一个生命,Java中的以下代码:
String TimeZoneId=TimeZone.getDefault().getID();
System.out.println(TimeZoneId);
可以用
输出美国/伊利
我用谷歌搜索但没有在c#中找到等价物。 TimeZoneInfo.GetSystemTimeZones()
中的结果与tzdb中的id不同。
有没有相同的方法?
答案 0 :(得分:4)
.Net并不自然地支持TZDB,因为微软拥有自己的时区数据库。有关详细信息,请参阅TimeZone tag wiki。
如果您想使用TZDB区域,请使用NodaTime库。你问的确切翻译是:
using NodaTime;
...
var timeZoneId = DateTimeZoneProviders.Tzdb.GetSystemDefault().Id;
Console.WriteLine(timeZoneId);
答案 1 :(得分:1)
通常可以使用TimeZone类完成此操作。根据我的理解,这是您与本机库最接近的。为什么需要特定的结果?
请查看Microsoft Time Zones和Windows等效的转换表*,因为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
请参阅此前的stackoverflow问题 .NET TimeZoneInfo from Olson time zone
答案 2 :(得分:1)
返回相似的值
Calendar.GetTimeZone
了解更多信息:https://docs.microsoft.com/en-us/uwp/api/windows.globalization.calendar.gettimezone?view=winrt-20348