PHP Echo Timezone基于GMT偏移量

时间:2009-12-17 18:09:05

标签: php date timezone offset

我有一个应用程序将GMT时间数据存储在MySQL数据库中,如下所示:2009-12-16 15:27:47。

用户的时区偏移量存储在另一列中,如下所示:-6

上述时区为GMT-6,即CST。有什么方法可以从GMT偏移数据中回复CST(即 - 日期('T“))吗?

注意:我还应该添加应用程序全局时区使用:date_default_timezone_set('GMT');

1 个答案:

答案 0 :(得分:2)

不幸的是,每个GMT偏移量并不总是有一个时区。许多GMT偏移都有多个时区。此外,GMT抵消在夏令时期间(如适用)发生变化。例如,在DST期间,US / Arizona和US / Mountain共享相同的GMT偏移;但是,在今年余下的时间里,US/MountainUS/Arizona不会共享相同的GMT偏移量。您可以使用DateTimeZone::listIdentifiers()check out the manual获取PHP中支持的时区列表。

如果您是从头开始申请,我建议存储时区标识符而不是GMT偏移量,但我猜您的应用程序已经投入生产。在这种情况下,如果不改进数据,就没有可靠的方法来显示时区。

我建议您在表格中添加timezone列。您可以编写一次性脚本,根据GMT偏移量将timezone设置为某些预定义的默认列表。例如,如果GMT偏移量为8,则将timezone设置为America/Los_Angeles。最后,将应用程序更改为显示/保存时区标识符而不是GMT偏移。这可能会导致用户子集出现问题,但如果需要,可以让他们更改时区。