蛋糕PHP时区错了

Kar*_*arl 3 timezone cakephp

我和Cake有一个奇怪的问题.我住在德国.当我添加帖子时,"创建的"数据库字段中的时间是6个小时.例如,下午6点创建的帖子显示在数据库中,创建时间为上午12点.我使用托管服务器,我联系了将php.ini设置为正确的时区Europe/Berlin的公司.当我请求服务器php.ini时,它正确显示时区"Europe/Berlin".但是当我运行代码时

$timezone = date_default_timezone_get();
echo "The current server timezone is: " . $timezone;
Run Code Online (Sandbox Code Playgroud)

在CakePHP中显示

The current server timezone is: America/New_York
Run Code Online (Sandbox Code Playgroud)

我已经尝试在core.php中设置:

date_default_timezone_set('Europe/Berlin');
Run Code Online (Sandbox Code Playgroud)

但这根本没有效果.希望有人知道该怎么做.

编辑1:

在询问支持运行"locale -a"之后,以下是吐出:

# locale -a
C
de_DE
de_DE@euro
de_DE.iso88591
de_DE.iso885915@euro
de_DE.utf8
deutsch
en_US.utf8
german
POSIX
Run Code Online (Sandbox Code Playgroud)

我认为服务器端的一切都很好,错误是蛋糕般的.但我不知道接下来要做什么?也许有人可以帮忙.提前致谢.

**编辑2:**

环顾可能是什么后,我发现了错误的Usermanagement-插件,设置时区那里UTC的bootstrap.php中.所以现在一切正常.还是要谢谢你的帮助.

Dav*_*ave 5

编辑:

如果做下面的答案没有效果(每个OP),可能是这个问题:

很可能在您运行脚本的服务器上没有安装德语语言环境 - 您是否具有对服务器的shell访问权限?然后试试

区域设置-a

查看已安装的语言环境.另外看看这里依赖setlocale是否可行,并依赖于安装的语言环境?


TLDR:

你有正确的想法 - 只需把它放在你的Config/bootstrap.php.而不是你的Config/core.php.

更多详情:

这可能和这个问题一样.它的答案是:

把它放在你的Config/bootstrap.php中:

date_default_timezone_set( 'UTC'); //或者你的时区

这只是基于服务器的时间,真正有没有关系CakePHP的 - 所以只需更改与PHP默认的时区,你应该是好去.'created'和'modified'将基于指定的时区.

重申一下," created"和" modified"字段是基于服务器的,并且与CakePHP没什么关系(听起来你已经假设正确).

一个相关的项目(只是fyi阅读)是CakeTime :: convert(),但在这种情况下,不是你想要的.