如何过滤时区?

时间:2015-02-20 04:20:24

标签: nodatime

我正在创建一个Web应用程序,它将为用户提供可用时区列表。但是,我不想看到整个时区列表,因为它很长,我不需要在一两个国家之外的任何东西。有没有办法过滤特定的时区,或基于国家,甚至几个国家?

1 个答案:

答案 0 :(得分:2)

在Noda Time中,您可以使用TzdbDateTimeZoneSource.Default.ZoneLocations中存储的位置信息按国家/地区过滤TZDB时区。

每个ZoneLocation都有ZoneId(例如America/Los_Angeles)和两个字母的国家/地区代码,例如" US"。您可以使用此功能过滤国家/地区as shown in this answer的时区。

这种方法唯一的缺点是你仍然只留下时区ID来显示用户。如果你想展示更友好的东西,比如"东部时间"或者"中欧时间",那些值不在Noda Time。相反,您可以使用TimeZoneNames library

使用TimeZoneNames,您可以做的一项操作是获取带有ID的时区以及特定语言的本地化显示名称。例如:

var zones = TZNames.GetTimeZonesForCountry("US", "en");

有关其他操作和示例输出,请参阅TimeZoneNames自述文件。