Php 什么';它足以存储时区吗?

Php 什么';它足以存储时区吗?,php,Php,我需要存储客户端时区,我想知道是否需要考虑DST。我关心的只是显示用户的本地时区,如果DST有效,那么系统应该反映它 使用date\u default\u timezone\u set设置用户的时区是否足够,并假设如果该区域有DST,将自动计算DST 我还需要做些什么来保证向用户显示正确的时间 编辑: 这里有一些很好的答案,谢谢 如果我将用户的时间戳存储在UTC中,而不管他们的实际时区如何,并且我使用date\u default\u timezone\u set转换UNIX时间戳,如果存在DST

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

使用
date\u default\u timezone\u set
设置用户的时区是否足够,并假设如果该区域有DST,将自动计算DST

我还需要做些什么来保证向用户显示正确的时间

编辑: 这里有一些很好的答案,谢谢


如果我将用户的时间戳存储在UTC中,而不管他们的实际时区如何,并且我使用
date\u default\u timezone\u set
转换UNIX时间戳,如果存在DST,是否会显示正确的时间?

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

在PHP脚本中,可以如下更改默认时区:

date_default_timezone_set("Europe/Oslo");
之后,我在运行
date(“r”)
时得到这个结果:

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


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

存储为UST,将时区存储为
Europe/London
(或任何适当的时区)并使用ObjectsHanks标记。UST还是UTC?这是更好的,为什么,PLZIF您只想显示它,您可能会考虑在服务器端不处理客户端时区或本地时间,只发送UTC UNIX时间整数,并在客户端浏览器中使用JavaScript将其转换为客户端认为是本地时间的任何时间。这还有一个额外的好处,即不必担心服务器和客户端操作系统之间可能存在的DST规则差异(DST规则时不时会发生变化,因此它们可能会失去同步)。@LaszloValko,谢谢。我想让它尽可能简单,你的解决方案听起来会很好。按照我现在的方式,我在使用
date\u default\u timezone\u set
后存储用户的时间。如果我这样离开它,这会给我带来问题吗?UTC,或者以前被称为GMT,没有夏令时等。例如,英国有夏令时,所以他们使用UTC+01:00。我会选择UTC UNIX,这总是正确的,然后在向最终用户/客户机输出数据时将其调整为任何时区。您甚至可以根据时区与UTC.Cheers的比较,为他们提供设置自己时区的选项。只是一个提示,我在php.net的列表中找不到“America/Pacific”,但您可能迟早会发现:)
time()
提供UTC+0时间戳,而不管您设置的时区是什么。是的,但仅当您使用地理名称时。如果我使用“欧洲/奥斯陆”,它会自动为我选择“CET”或“CEST”。但是,如果我使用诸如“CET”或“Etc/GMT+1”之类的名称,无论夏令时如何,它都会给我“GMT+1”。Atle,非常感谢您的帮助,并感谢您对我的容忍。:)
Sun, 27 Oct 2013 11:22:52 +0100