我正在使用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;
}