蛋糕PHP3显示相差一小时的日期


CakePHP3 shows date with one hour difference

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

 object(Cake'I18n'Time)[326]
  public 'date' => string '2016-02-10 15:30:51' (length=19)
  public 'timezone_type' => int 3
  public 'timezone' => string 'America/Buenos_Aires' (length=20)

但如果我这样做

<?= $object->datetime_field ?> 

我得到: '2016-02-10 16:30:51' .它是相同的日期时间,但比存储在 MySQL 中的日期时间多一个小时,并以 var_dump()...为什么?时区正确。

var dump 显示变量(对象)的内容。当您回显 Cake''I18n''Time 对象时,它会自动将时区设置为 Cake PHP 的时区。对象的时区是"美国/Buenos_Aires" CakePHP 可能有不同的时区。

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

date_default_timezone_set('America/New_York');

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

$object->setTimezone(new 'DateTimeZone('America/New_York'));

阅读更多关于蛋糕蛋糕''I18n''时间类在这里:https://book.cakephp.org/3.0/en/core-libraries/time.html#dates