Symfony日期不正确



我正在使用Symfony和MongoDB。

  • 我提交了一个表单:name="小学生[dateOfBirth]" -> 17-09-1985
  • MongoDB将其"提前一天"存储为:1985-09-16T22:00:00.000Z

我怎么能确定mongo存储正确的日期?我在MongoDB中使用了bson类型的日期(9)

Doctrine将以ISO 8601格式存储日期时间。

给定存储的时间,这意味着您的PHP时区比UTC早2小时,因此1985年9月17日变成1985年9月16日晚上10点。末尾的"Z"表示时区,即UTC。

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

可能有一种方法可以将Mongo中的DateTime值存储为1985-09-17T00:00:00.000+02:00

通过显式地将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;
 }

相关内容

  • 没有找到相关文章

最新更新