CakePhp允许为这两个文件中的数据源(数据库)和应用程序设置时区:
在config / app.php中:
'Datasources' => [
'default' => [
'className' => 'Cake\Database\Connection',
'driver' => 'Cake\Database\Driver\Mysql',
'persistent' => false,
'host' => 'localhost',
'timezone' => 'UTC',
...
]
]
在config / boostrap.php中:
/*
* 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('UTC');
它究竟做了什么? 因为当我在数据库中保存日期时间列中的时间时,它甚至不会将其转换为UTC ...
那么重点是什么?该如何使用?
感谢。
答案 0 :(得分:1)
它到底做了什么取决于所使用的DBMS,对于MySQL,它会更改time_zone
设置(仅适用于该连接),这会影响所谓的" 区域敏感& #34;函数和数据类型,例如NOW()
和TIMESTAMP
。 DATETIME
类型列未受影响,它们不区分区域。
当前会话时区设置会影响区域敏感的时间值的显示和存储。这包括由NOW()或CURTIME()等函数显示的值,以及存储在TIMESTAMP列中和从TIMESTAMP列中检索的值。 TIMESTAMP列的值将从当前时区转换为UTC以进行存储,并从UTC转换为当前时区以进行检索。
当前时区设置不会影响由UTC_TIMESTAMP()等函数显示的值或DATE,TIME或DATETIME列中的值。这些数据类型中的值也不是以UTC格式存储的;只有从TIMESTAMP值转换时,时区才适用于它们。如果您想要DATE,TIME或DATETIME值的特定于语言环境的算术,请将它们转换为UTC,执行算术,然后转换回来。
<强> https://dev.mysql.com/doc/refman/5.7/en/time-zone-support.html 强>
当从/向数据库读取/写入时,CakePHP当前执行 NOT 转换时区。
通过date_default_timezone_set()
设置的默认PHP时区将影响CakePHP在编组时解析/解释日期/时间值的方式(例如在创建/修补实体时发生这种情况),以及CakePHP / Chronos日期/时间的方式正在创建对象。
另见