php - date_default_timezone_set不起作用,但ini_set'date.timezone'确实有效。为什么?

时间:2013-02-26 18:15:13

标签: php date timezone

正如标题所说,任何人都可以解释为什么代码

ini_set( 'date.timezone', 'Europe/Athens' );

有效但

date_default_timezone_set( 'Europe/Athens' );

没有?

我一直在寻找一个转换时间戳的解决方案,我在网上找到的就是使用date_default_timezone_set。但转换总是有1小时的差异。

然后我发现这个主题“strftime() function showing incorrect time”正在使用init_set代码(之后我发布了RTM并发现它已在文档中提到)。我尝试了它并且它有效。

但我没有找到答案,为什么date_default_timezone_set无效。

有人可以解释一下吗?

3 个答案:

答案 0 :(得分:3)

您必须使用旧版本的PHP。

date_default_timezone_set is for PHP 5.1.2 and above.

尝试php -v并检查您的PHP版本。

答案 1 :(得分:0)

您可以使用:

putenv("TZ=Europe/Berlin"); // PHP 4

答案 2 :(得分:-1)

localhost

server

现在已经很晚了,我遇到了同样的问题,我发现存在差异,我发布了本地主机截图和个人服务器phpinfo的时区截图。

在我的localhost上,date_default_timezone_set(' [timezone]')正常工作,但是,在服务器上,它始终返回UTC。基于php doc,看起来我的服务器的php ini中没有设置时区,所以我可能会忽略时区设置,因为之前没有定义任何值。

使用init_set,可以使时区可用。我认为php ini上没有预定义的时区是原因。