目前我有一个从 php $tzlist = DateTimeZone::listIdentifiers(DateTimeZone::ALL);
获取的时区列表,其中包含 400+ 个时区,有什么办法可以使用这些时区列表而不是那个庞大的列表。
我们要做的是为要显示的每个时区选择一个"代表性"时区。因此,我们的下拉列表如下所示:
<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",
]