Symfony日期不正确

时间:2014-03-21 13:37:01

标签: mongodb date symfony timezone

我正在使用Symfony和MongoDB。

  • 我提交的表格为:name =“pupil [dateOfBirth]” - > 17-09-1985
  • MongoDB将其“提前一天”存储为:1985-09-16T22:00:00.000Z

我如何确定mongo存储正确的日期? 我在MongoDB中使用了BSON类型的Date(9)

2 个答案:

答案 0 :(得分:1)

Doctrine将以ISO 8601格式存储DateTimes。

考虑到存储的时间,这意味着您的PHP时区比UTC早2小时,因此1985年9月17日到1985年9月16日晚上10点。最后的Z表示时区,即UTC。

当您从Mongo获得日期时间值时,应该将其转换回1985年9月17日午夜。

可能有一种方法可以将日期时间值存储在Mongo中,如1985-09-17T00:00:00.000 + 02:00

答案 1 :(得分:0)

通过在文档设置器中将DateTime对象显式设置为午夜和右时区,MongoDb将其存储为" ... 22:00:00.000Z"而不是" ... 23:00:00.000Z"。

/**
 * Set dateOfBirth
 *
 * @param Date $dateOfBirth
 * @return self
 */
 public function setDateOfBirth($dateOfBirth)
 {
     $this->dateOfBirth = $dateOfBirth->modify('midnight')->setTimezone(new \DateTimeZone('Europe/Brussels'));
     return $this;
 }