Список часовых поясов с аббревиатурой, именем и gmt php

Я искал часы, чтобы найти способ отображения списка часовых поясов, который должен выглядеть точно так:

Я нашел способы отобразить список сокращений, список с помощью gmt, но как мне получить такие имена, как Центральноевропейское время?

Я могу найти только списки с такими именами, как: Европа / Амстердам, Европа / Берлин и т. Д. И это именно то, что мне не нужно.

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

1 ответ

Решение

Список примеров, который вы показали, выглядит так, как будто он был получен из данных, предоставленных Отделом службы времени Военно-морской обсерватории США. С тех пор они обновили названия, такие как "Зона 3 СССР", которые теперь называются "Зона 3 Российской Федерации". Но это всего лишь личные интерпретации администратором того, что, по их мнению, следует назвать часовыми поясами. Они не являются официальными в любом случае.

Если вы будете искать в Интернете, вы найдете множество других статических веб-сайтов (таких как здесь и здесь), которые, кажется, считают их официальными и заштрихованы. Это просто не тот случай. Я имею в виду, если вы живете в России, думаете ли вы, что когда-нибудь действительно скажете, что следите за "Часовой пояс 3"? Нет, вы, вероятно, сказали бы, что следите за "Московским временем" или, возможно, "Московским стандартным временем". (См. Статью Википедии о времени в России.)

Так что это только один пример, но тогда возникает вопрос, откуда взять названия часовых поясов? Общая проблема заключается в том, что их нет в данных TZDB, поэтому PHP не возвращает их вам. Как я уже показал, они подлежат интерпретации. Сокращения часового пояса также подлежат интерпретации. Если вам нужна немного лучшая интерпретация, представленная здесь, кажется, более правдоподобна. Но это, вероятно, все еще должно быть отфильтровано для ваших целей.

Лучшим источником названий часовых поясов является Unicode CLDR. Они предлагают очень большой набор данных, который переводит многие вещи на разные языки, и одной из вещей, которые они охватывают, являются названия часовых поясов. Но чтобы получить имя часового пояса из ключа часового пояса IANA из данных CLDR, вы должны перепрыгнуть через множество обручей:

Конечно, вам придется делать все это программно из их источников данных XML или JSON. И вам придется делать это для каждого часового пояса, который вас интересует.

Зачем идти на все эти неприятности? Хорошо, если у вас есть пользователь, который говорит на другом языке, например, на французском, вы бы хотели показать ему "Центрально-европейское стандартное время" или "heure normale de l'Europe centrale"? Только CLDR может дать вам такой перевод.

Так что я знаю, что это не давало вам напрямую PHP-код, который вы можете использовать сразу, но, надеюсь, теперь вы понимаете, почему это не возможно напрямую, и что почти любой список, на который вы натолкнулись, является предметом чьей-то личной интерпретации и является может быть устаревшим или частично неверным.

Другие вопросы по тегам