Java中的TimeZone.getDefault()。getID()的c#的等价性是什么?

时间:2013-04-13 11:27:40

标签: c# java timezone jodatime nodatime

对于Republic of Molossia中的一个生命,Java中的以下代码:

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

可以用

输出
  

美国/伊利

我用谷歌搜索但没有在c#中找到等价物。 TimeZoneInfo.GetSystemTimeZones()中的结果与tzdb中的id不同。

有没有相同的方法?

3 个答案:

答案 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);

MSDN REFERENCE

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

请参阅此前的stackoverflow问题 .NET TimeZoneInfo from Olson time zone

答案 2 :(得分:1)