当前,我有一个从php $tzlist = DateTimeZone::listIdentifiers(DateTimeZone::ALL);
中获取的时区列表,其中包含400多个时区,我有什么办法可以使用这些时区list而不是庞大的列表。
答案 0 :(得分:1)
我们要做的是为我们要显示的每个时区选择一个“代表性”时区。因此,我们的下拉菜单如下所示:
<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
部分是我们保存到用户数据库中的部分,但它们是根据他们可能熟悉的“更精细”的名称来选择的。这也比GMT偏移更好,因为它会自动考虑夏令时。
另一个可能的选择是让用户首先选择一个国家。如果这样做,则可以将第二个可选参数传递给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",
]