如何获取用作时区初始化程序的 tzdb 中的字符串列表?

How do I get the list of strings in tzdb used as time zone initializer?

所以我是 NodaTime 的新手,并尝试使用它来使用 DateTimeZone 对象存储时区信息。

我在用户指南等中看到了下面的示例,它给了我一个来自 tzdb 的不错的 DateTimeZone 对象,这很棒。

var london = DateTimeZoneProviders.Tzdb["Europe/London"];

我的问题是 - 如何获取在 tzdb 中使用的时区字符串列表 ("Europe/London")。我环顾四周,无处可寻。有没有我可以参考的标准列表?这是如何运作的?前任。 - 我应该为 EST 传递的字符串是什么?

谢谢!

要以编程方式获取时区 ID,请使用 IDateTimeZoneProvider 中的 Ids 属性。例如,要查找所有区域:

var provider = DateTimeZoneProviders.Tzdb;
foreach (var id in provider.Ids)
{
    var zone = provider[id];
    // Use the zone 
}

对于东部时间,您可能需要 America/New_York。

更一般地说,这些标识符是来自 IANA 的标识符 - 它们是大多数非 Windows 系统中使用的标识符。