CakePhp应用程序中的时区配置是什么?

时间:2018-03-15 13:22:31

标签: php cakephp configuration timezone

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 ...

那么重点是什么?该如何使用?

感谢。

1 个答案:

答案 0 :(得分:1)

它到底做了什么取决于所使用的DBMS,对于MySQL,它会更改time_zone设置(仅适用于该连接),这会影响所谓的" 区域敏感& #34;函数和数据类型,例如NOW()TIMESTAMPDATETIME类型列未受影响,它们不区分区域。

  

当前会话时区设置会影响区域敏感的时间值的显示和存储。这包括由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日期/时间的方式正在创建对象。

另见