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