我正在使用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
);