PHP: 将CEST设置为时区

9
在使用/usr/bin/php命令行调用php时,它会关注我的时区设置。我通过phpinfo()查看了php.ini文件。我想使用CEST作为时区并编写了以下内容:date.timezone = CEST。你看到有错误吗?

请您给几行上下文代码吗? - ametren
1
“/usr/bin/php -r “phpinfo();”” 返回有关时区的警告,从系统时间中获取该警告是不安全的。 - ledy
2个回答

16
date.timezone = 'Europe/Berlin';

将会给你想要的结果。正如@nickb所提到的,'CEST'不是一个支持的时区。此外,不要忘记引号,它必须是一个有效的字符串。


1
CEST是否真的等同于欧洲/柏林?我猜这取决于冬季/夏季,而CEST保持不变,是吗? - ledy
嗯,也许我没有仔细考虑,但我不确定你的问题是否有一个干净的解决方案。您可以始终使用**date()**(http://php.net/manual/en/function.date.php)来检查给定日期是否处于夏令时,并相应地修改您的日期。 - inVader
您还可以使用“UTC”作为时区,它没有夏令时修正,总是将结果加两个小时得到CEST。 - inVader

4
你的问题在于CEST时区不在支持的时区列表中。
你可以使用CET,它是受支持的,但我不确定它对你的用例有何影响。
date.timezone = "CET"

很遗憾,这不再是一个有效的选项。页面本身警告说:“[这些时区代码]仅出于向后兼容的原因存在,并可能暴露错误行为。” - PypeBros
对我来说也是一样。当设置 date.timezone = "CET" 时,我在twig/symfony中遇到了夏令时问题,因为timezone_type在某个地方是1,在另一个地方是3。在格式化日期时,timezone_type为2的地方进行了时区转换,导致我得到了错误的时间...我没有详细调试,因为我已经找到了有关CET的警告,并将其设置为'Europe/Berlin',这解决了我的问题。 - LarS

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接