Как фильтровать часовые пояса?

Я создаю веб-приложение, которое предложит пользователю список доступных часовых поясов. Однако я не хочу видеть весь список часовых поясов, потому что он длинный, и мне не нужно ничего, кроме одной или двух стран. Есть ли способ фильтрации по конкретным часовым поясам, по стране или даже по нескольким странам?


person damccull    schedule 20.02.2015    source источник


Ответы (1)


В Noda Time вы можете фильтровать часовые пояса TZDB по странам, используя информацию о местоположении, хранящуюся в TzdbDateTimeZoneSource.Default.ZoneLocations.

Каждый ZoneLocation имеет ZoneId (например, America/Los_Angeles) и двухбуквенный код страны, например "США". Вы можете использовать это для фильтрации часовых поясов по стране, как показано в этом ответе.

Единственным недостатком такого подхода является то, что у вас по-прежнему остается только идентификатор часового пояса для отображения пользователю. Если вы хотите показать что-то более дружелюбное, например «Восточное время» или «Центральноевропейское время», эти значения не указаны в Noda Time. Вместо этого вы можете использовать библиотеку TimeZoneNames.

С помощью TimeZoneNames можно выполнить одну операцию — получить часовые пояса с их идентификаторами и их локализованными отображаемыми именами для определенного языка. Например:

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

Подробнее о дополнительных операциях и примерах вывода см. в TimeZoneNames.

person Matt Johnson-Pint    schedule 20.02.2015