设置时区不会更改 CakePHP 3.x 中的显示时间



我正在使用cakephp 3.x,并且有小时的问题。

我的数据库(MySQL)有正确的时间。当我的应用程序显示这些小时时,我在UTC中有小时而不是记录。用其他话来说,我的数据库中记录了10:00,并且在我的网站上显示08:00

根据食谱,我尝试更改

date_default_timezone_set('UTC');

to

date_default_timezone_set('Europe/Paris');

in config/bootstrap.php

,但我仍然在UTC有时间。也许我错过了什么?

预先感谢

我找到了这个解决方案:

in config/app.php ,在 Datasources中留下 timezone arnever:

'Datasources' => [
    'default' => [
        /* previous code */
        'timezone' => '',
        /* next code */
    ],
]

我不知道它是否正确,但起作用

cakephp 3.0,在bootstrap.php行中设置默认时区95-99

/**
 * Set server timezone to UTC. You can change it to another timezone of your
 * choice but using UTC makes time calculations / conversions easier.
 */
date_default_timezone_set('Asia/Karachi');

php时区列表。

要与数据库保持同步,还将数据库时区设置为app.php行216-238

'Datasources' => [
    'default' => [
        'className' => 'CakeDatabaseConnection',
        'driver' => 'CakeDatabaseDriverMysql',
        'persistent' => false,
        'host' => 'localhost',
        /**
         * CakePHP will use the default DB port based on the driver selected
         * MySQL on MAMP uses port 8889, MAMP users will want to uncomment
         * the following line and set the port accordingly
         */
        //'port' => 'non_standard_port_number',
        'username' => 'root',
        'password' => '',
        'database' => 'invoicing',
        'encoding' => 'utf8',
        'timezone' => '+8:00', // It can be UTC or "+10:00" or "-4:00"
        'flags' => [],
        'cacheMetadata' => true,
        'log' => false,

mySQL参考

date_default_timezone_set('Europe/Paris');用于在时区显示日期('y-m-d')或类似信息,或者在保存信息时会影响,并将存储在巴黎时区而不是UTC中,更改它只会影响信息的保存方式。请在此处检查更多信息:

http://php.net/manual/en/function.date-default timezone-set.php

如果您想更改每个用户在不同时区显示信息的方式,请始终将信息保存在一个时区,请始终查看:

http://book.cakephp.org/3.0/en/views/helpers/time.html#using-the-helper

echo $this->Time->format( $post->created, IntlDateFormatter::FULL, null, $user->time_zone );

相关内容

  • 没有找到相关文章

最新更新