Я создаю веб-приложение, которое предложит пользователю список доступных часовых поясов. Однако я не хочу видеть весь список часовых поясов, потому что он длинный, и мне не нужно ничего, кроме одной или двух стран. Есть ли способ фильтрации по конкретным часовым поясам, по стране или даже по нескольким странам?
Как фильтровать часовые пояса?
Ответы (1)
В Noda Time вы можете фильтровать часовые пояса TZDB по странам, используя информацию о местоположении, хранящуюся в TzdbDateTimeZoneSource.Default.ZoneLocations
.
Каждый ZoneLocation
имеет ZoneId
(например, America/Los_Angeles
) и двухбуквенный код страны, например "США". Вы можете использовать это для фильтрации часовых поясов по стране, как показано в этом ответе.
Единственным недостатком такого подхода является то, что у вас по-прежнему остается только идентификатор часового пояса для отображения пользователю. Если вы хотите показать что-то более дружелюбное, например «Восточное время» или «Центральноевропейское время», эти значения не указаны в Noda Time. Вместо этого вы можете использовать библиотеку TimeZoneNames.
С помощью TimeZoneNames можно выполнить одну операцию — получить часовые пояса с их идентификаторами и их локализованными отображаемыми именами для определенного языка. Например:
var zones = TZNames.GetTimeZonesForCountry("US", "en");
Подробнее о дополнительных операциях и примерах вывода см. в TimeZoneNames.