2015-02-20 2 views
0

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

ответ

2

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

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

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

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

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

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