CakePHP3显示的日期相差一小时

CakePHP3显示的日期相差一小时,php,cakephp,Php,Cakephp,我使用的是CakePHP3框架。在MySQL数据库中,我有一个datetime字段。在这里,我有,例如这个日期时间:2016-02-10 15:30:51。当我从CakePHP捕获这个字段时,我得到了正确的日期时间,因为如果我执行“var_dump()”,我得到: 但如果我这样做了 <?= $object->datetime_field ?> 我得到了:“2016-02-1016:30:51”。它与datetime相同,但比MySQL中存储的和使用var_dump()显

我使用的是CakePHP3框架。在MySQL数据库中,我有一个datetime字段。在这里,我有,例如这个日期时间:2016-02-10 15:30:51。当我从CakePHP捕获这个字段时,我得到了正确的日期时间,因为如果我执行“var_dump()”,我得到:

但如果我这样做了

<?= $object->datetime_field ?> 


我得到了:“2016-02-1016:30:51”。它与datetime相同,但比MySQL中存储的和使用var_dump()显示的时间多了一个小时。。。为什么?时区正确。

var dump显示变量(对象)的内容。当您回显Cake\I18n\Time对象时,它会自动将时区设置为Cake PHP的时区。对象的时区为“America/Buenos_-Aires”,CakePHP可能有不同的时区

您可以在config/bootstrap.php中更改cakephp的默认时区

您可以更改Cake\I18n\Time对象的时区

在此处阅读有关cake-the-cake\I18n\Time类的更多信息:

var_dump查看对象的内部<代码>好的,你怎么能理解为什么日期打印时相差一个小时?千万不要看蛋糕的内部。可能是它在utc内部存储东西,然后使用
时区
字段将输出转换为“本地”时间。
<?= $object->datetime_field ?> 
date_default_timezone_set('America/New_York');
$object->setTimezone(new \DateTimeZone('America/New_York'));