Как получить данные для заполнения виджета переключателя часового пояса на сайте? - PullRequest
0 голосов
/ 03 сентября 2010

Задача:

Виджет выбора часового пояса, позволяющий посетителям сайта выбирать свой часовой пояс, должен быть создан и заполнен достоверными данными.Он должен предлагать следующие варианты:

GMT-11 (HH:MM actual time in that zone)
GMT-10 (...)
GMT-1 (...)
... now for the tricky part:
GMT (...)
GMT+1 (...)
... and then all the way until +12.

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

Проблема:

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

В приведенном выше списке я отметил некоторую "хитрую" часть.Это где часовые пояса, такие как Европа / Лондон.В обычное время Европа / Лондон = GMT, но во время летнего времени, Европа / Лондон = GMT + 1 ... Вы видите проблему?

Меня также беспокоит то, что не все часовые пояса меняются с летнего на летнее.обычное время и наоборот, поэтому я не могу просто заполнить список общими данными, такими как -11 = GMT-11, -10 = GMT-10, ... , а затем просто применить некоторую логику, чтобы найтичасовой пояс с соответствующей разницей во времени, а затем установите этот часовой пояс по умолчанию с этого момента.

Мне интересно узнать, как другие сайты, использующие эту функцию переключения часовых поясов, предлагают списокчасовые пояса и логика, чтобы выбрать правильный часовой пояс, в зависимости от выбора пользователя?Что-то еще, что вы хотели бы добавить или спросить?

Ответы [ 2 ]

1 голос
/ 03 сентября 2010

Наиболее часто используемым источником данных о часовых поясах является база данных tz/zoneinfo - она ​​общедоступна бесплатно.

Как вы уже заметили, часовой пояс - это политический / административный объект, состоящий из базового смещения, дат перехода на летнее время и даже исторических данных об изменениях в них, которые вам необходимо корректно учитывать для исторических дат (например, * 1006). * шесть с половиной минут, которых официально не существует ).

Таким образом, база данных tz (и большинство приложений, которые ее используют) представляют часовой пояс не через базовое смещение, а через название континента и большого города, который его использует, часто столицу страны, которая использует это конкретное время. зона. Примеры: «Европа / Берлин» или «Австралия / Дарвин».

0 голосов
/ 03 сентября 2010

Посмотрите, что делает Календарь Google . Отображается смещение стандартное время , а также название города, например,

(GMT+01:00) Tunis

Мне кажется, это вполне разумный способ представлять их. С другой стороны, я знаю, что некоторые пользовательские интерфейсы перечисляют текущее смещение * UTC вместе с городом. В любом случае, вы будете путать людей, если честно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...