Понимание списка часовых поясов - PullRequest
0 голосов
/ 07 февраля 2019

В настоящее время у меня есть список часовых поясов, извлеченных из php $tzlist = DateTimeZone::listIdentifiers(DateTimeZone::ALL);, которые содержат 400+ часовых поясов. Есть ли способ, которым я могу использовать эти часовые пояса список вместо этого огромного списка.

1 Ответ

0 голосов
/ 07 февраля 2019

Что мы делаем, это выбираем «репрезентативный» часовой пояс для каждого из часовых поясов, которые мы хотим показать.Итак, наш раскрывающийся список выглядит примерно так:

<select>
    <option value="America/New_York">US Eastern Time</option>
    <option value="America/Los_Angeles">US Pacific Time</option>
    <option value="Asia/Tokyo">Japan Standard Time</option>
    <option value="Australia/Sydney">Australia Eastern Time</option>
</select>

Часть value - это то, что мы сохраняем в базе данных пользователя, но они выбираются на основе «более хороших» имен, которые они, вероятно,быть знакомым с.Это также работает лучше, чем смещение по Гринвичу, поскольку оно учитывает такие вещи, как переход на летнее время автоматически.

Еще один потенциальный вариант - сначала выбрать страну.Если вы сделаете это, вы можете передать второй необязательный параметр в listIdentifiers:

DateTimeZone::listIdentifiers(DateTimeZone::PER_COUNTRY, 'AU')

, который ограничит вывод только действительными часовыми поясами в этой стране :

[
    "Antarctica/Macquarie",
    "Australia/Adelaide",
    "Australia/Brisbane",
    "Australia/Broken_Hill",
    "Australia/Currie",
    "Australia/Darwin",
    "Australia/Eucla",
    "Australia/Hobart",
    "Australia/Lindeman",
    "Australia/Lord_Howe",
    "Australia/Melbourne",
    "Australia/Perth",
    "Australia/Sydney",
]

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

DateTimeZone::listIdentifiers(DateTimeZone::PER_COUNTRY, 'FR')

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