什么足以存储时区?

时间:2013-10-27 09:41:16

标签: php

我需要存储客户时区,我想知道是否需要考虑DST。我所关心的只是显示用户的本地时区,如果DST生效,那么系统应该反映它。

使用date_default_timezone_set设置用户的时区是否足够,并假设如果该区域有DST,则会自动计算DST?

我还需要做些什么来保护用户显示正确的时间吗?

修改 这里有一些很好的答案,谢谢。

如果我以UTC格式存储用户时间戳,无论其实际时区如何,我使用date_default_timezone_set转换UNIX时间戳,如果存在DST,是否会显示正确的时间?

1 个答案:

答案 0 :(得分:0)

最好将日期和时间存储为UTC + 0。当您在PHP中向用户打印日期时,date()等函数会接受时间戳参数。这些功能还会自动将时间戳转换为当前时区。时间戳始终为UTC + 0.

在PHP脚本中,您可以像这样更改默认时区:

date_default_timezone_set("Europe/Oslo");

之后,我在运行date("r")时得到了这个结果:

Sun, 27 Oct 2013 11:22:52 +0100

使用地理时区名称时,时间将根据一年中的哪个时间转换为正确的时区。在我的例子中,现在选择“CET(GMT + 1)”,但昨天它会给我夏令时区“CEST(GMT + 2)”。

要将当前时间存储在例如数据库中,通常只需将时间戳存储为整数(INT(11))。当前UTC + 0时间戳是使用time()检索的PHP。