Что мы делаем, это выбираем «репрезентативный» часовой пояс для каждого из часовых поясов, которые мы хотим показать.Итак, наш раскрывающийся список выглядит примерно так:
<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",
]