如何以TZ格式检索系统时区.net c#

时间:2017-12-07 14:52:53

标签: c# .net timezone

我正在尝试研究如何在Windows上以(TZ)格式检索当前系统时区,即。 America / New_York,我需要将此提供给此应用程序与之通信的API。

我正在使用

TimeZone.CurrentTimeZone

这给了我这个输出

GMT Standard Time

我希望得到的是像

Europe/London

我错过了一些简单的东西,或者这是不可用的,因此这是否意味着我需要自己进行转换?

2 个答案:

答案 0 :(得分:6)

我建议使用NodaTime

您可以像这样获得系统的时区:

DateTimeZone tz = DateTimeZoneProviders.Tzdb.GetSystemDefault();

如果您使用tz.ToString()

,它将根据您的需要获得IANA时区

(除此之外,它是一个非常好的open source库,可以处理IMHO中的时区,日期时间,瞬间和日历,它比内置的.NET DateTime类更加结构化和可靠。)

NodaTime由SO中的一些高级用户维护并得到很好的支持;)。

有关信息,您获得并且不想要的输出(.NET使用的输出)称为BCL时区,但您需要IANA时区(或TZDB)(更准确)< / p>

答案 1 :(得分:3)

Noda Time是一个很好的选择。对于处理日期,时间和时区而言,这是一个更好,更全面的API,而不是内置于.NET的内容。

但是,如果以IANA TZDB格式获取系统时区是您在此空间中所做的仅 事情,您可能会发现使用我的TimeZoneConverter库更加简单。

string tz = TZConvert.WindowsToIana(TimeZoneInfo.Local.Id);
相关问题