时区列表了解

时间:2019-02-07 17:28:58

标签: php timezone

当前,我有一个从php $tzlist = DateTimeZone::listIdentifiers(DateTimeZone::ALL);中获取的时区列表,其中包含400多个时区,我有什么办法可以使用这些时区list而不是庞大的列表。

1 个答案:

答案 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",
]