我正在使用CakePHP3框架。在我的MySQL数据库中,我有一个datetime字段。在这个我有,例如这个日期时间: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 ?>
我得到了:&#39; 2016-02-10 16:30:51&#39; 。它是相同的日期时间,但比存储在MySQL中的时间长1小时,并且显示为var_dump()...为什么?时区是正确的。
答案 0 :(得分:0)
var dump显示变量(对象)的内容。当您回显Cake \ I18n \ Time对象时,它会自动将时区设置为Cake PHP的时区。对象的时区是'America / Buenos_Aires'CakePHP可能有不同的时区。
您可以在config / bootstrap.php中更改cakephp的默认时区
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