Создание удобного для пользователя списка часовых поясов для пользовательских настроек

Ниже приведен фрагмент списка часовых поясов, возвращаемых из java (я напечатал смещение временной зоны, идентификатор часового пояса и длинное имя, используя JodaTime).

(GMT-10:00) HST, Hawaii Standard Time     
(GMT-10:00) Pacific/Apia, -10:00
(GMT-10:00) Pacific/Fakaofo, Tokelau Time
(GMT-10:00) Pacific/Honolulu, Hawaii Standard Time
(GMT-10:00) Pacific/Johnston, Hawaii Standard Time

В чем разница между HST, Pacific/Honolulu и Pacific/Johnston, например? Кажется, что они используют стандартное время Гавайев, почему в базе данных есть 3 записи?

  • Моя конечная цель - просто создать список часовых поясов для пользовательских настроек в веб-приложении.

Если я использую все временные интервалы из tzDatabase, список длинный и имеет эффективные дубликаты (пример выше). Я мог бы просто перечислить уникальные имена длинной формы, такие как "Стандартное время Гавайев", но тогда мне нужно решить, как сопоставить его с любым из часовых поясов, которые используют то же длинное имя.

Что делают другие люди в этом случае? Как вы создаете приятный удобный для пользователя список часовых поясов и сопоставляете их с соответствующими java TimeZone?

Ответы

Ответ 1

Я думаю, вы делаете предположение, что "удобный" означает показать им небольшой список. Дело в том, что все эти часовые пояса где-то используются кем-то. Они могут выглядеть одинаково для вас, но они часто имеют немного другое поведение. Я живу в Саскачеване, и у нас есть своя версия КНТ. Длительное название - это только "Центральное стандартное время", но мы не используем DST, поэтому в течение половины года мы не выстраиваем реальный CST. Существует даже одна небольшая область Саскачевана, которая имеет разницу в 15 минут во времени. Даже если они кажутся одинаковыми, они разные, и я думаю, вы должны разрешить пользователям выбирать из всего списка.

Попытка разумного сокращения списка может быть сопоставима с тем, чтобы не перечислять все возможные коды валют, позволяя пользователю выбирать предпочтительную валюту. Да, может быть только горстка людей, которые используют некоторые из них. Конечно, в настоящее время могут быть некоторые с теми же коэффициентами конверсии. В конце концов, позвольте пользователю решить, что им нужно.

Одно из решений для отображения больших списков или потенциально не важных данных с несколькими интересами: сначала выберите наиболее часто используемые, а затем отделите их в верхней части списка. Это можно увидеть на разных сайтах для выбора страны, например:

Canada
United States
------------------
Argentina
Australia
...

Эта стратегия также часто используется для моего предыдущего примера валюты. Он может выглядеть примерно так для часовых поясов (если ваша основная пользовательская база находится в Северной Америке):

EST
CST
MST
PST
------------------
Hawaii
Saskatchewan
...

Помните, что это потребует от вас вручную, предварительно определить, какие общие часовые пояса.

Я считаю, что лучший подход - просто перечислить время все, отсортированное по смещению, потому что большинство людей будет знать, где найти там зону на основе смещения. Например, я всегда смотрю сначала на "-6: 00", а не на Саскачеван. Надеюсь, это поможет!

Ответ 2

Данные CLDR содержат список "важных" часовых поясов и, вероятно, могут использоваться для выбора отображаемых. (Я помню что-то еще, но это - это лучшее, что я могу найти сейчас)

Идентификаторы нескольких временных зон будут существовать для одного и того же места, если в прошлом эти данные были разными, или если место было переименовано (функция псевдонима в данных часового пояса). Удаление обратного файла при компиляции данных часового пояса приведет к удалению большинства псевдонимов.

Ответ 3

Возможно, наиболее частая разница в часовом поясе использует летнее время.