我刚刚将Symfony2.4项目迁移到Symfony3.0,我面临着一个奇怪的情况 .
项目的默认时区是UTC,所有内容都作为UTC时间戳存储在MYSQL数据库中 .
我检索一个名为'checkOut'的日期时间字段的条目,将其传递给twig模板:
<p>{{ dump(entity.checkOut) }}</p>
<p>{{ dump(entity.checkOut.getTimestamp()) }}</p>
我得到:
DateTime {#585 ▼
+"date": "2016-09-17 10:46:00.000000"
+"timezone_type": 3
+"timezone": "UTC"
}
1474109160
哪个是对的 .
但我的应用程序应该支持来自不同时区的用户 . 因此,我存储用户首选时区并使用事件侦听器进行设置
date_default_timezone_set($this->token_storage->getToken()->getUser()->getTimezone());
之后显示相同的条目:
DateTime {#585 ▼
+"date": "2016-09-17 10:46:00.000000"
+"timezone_type": 3
+"timezone": "Asia/Jakarta"
}
1474083960
这显然是错误的,因为时间戳现在不同了 . 我希望这个:
DateTime {#585 ▼
+"date": "2016-09-17 17:46:00.000000"
+"timezone_type": 3
+"timezone": "Asia/Jakarta"
}
1474109160
这曾经在sf2.4中正常工作 . 任何人都可以解释问题是什么,我该如何解决它?
1 回答
那是因为您正在更改服务器的默认时区,而不是更改有问题的DateTime实例的时区 . 我的一个宠物讨厌!
我不熟悉树枝,但做这样的事情会给你预期的结果: -