Подтвердить что ты не робот

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

Ниже приведен фрагмент списка часовых поясов, возвращаемых из 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?

4b9b3361

Ответ 1

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

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

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

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

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

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

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

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

Ответ 2

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

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

Ответ 3

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