我还不知道具体问题在哪里...... 我有一个带有日期字段的Doctrine实体:
/**
* @var \DateTime
*
* @ORM\Column(name="day", type="date")
*/
private $day;
我还有一个带有日期类型字段的实体表单:
$builder->add('day', DateType::class, ['widget' => 'single_text'])
当我尝试保存带有价值的表格" 2016-02-14"我看到它变成了" 2016-02-13" (一天前)在MySQL和PHP中保存后。当我开始查找日志时,我看到查询参数值为" 2016-02-13 23:00:00"。
但我不明白为什么会这样。 我在系统(Ubuntu),PHP和MySQL(欧洲/莫斯科时区)中拥有相同的时间和时区。
我使用日期类型,而不是日期时间,所以根本不应该有时间。
当我尝试调试它时,我看到了代码
#vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/DateType.php
public function convertToDatabaseValue($value, AbstractPlatform $platform)
{
return ($value !== null)
? $value->format($platform->getDateFormatString()) : null;
}
正常工作。它使格式正确" Y-m-d",但在symfony日志值中随时间变化。
我需要一个关于如何查找我的日期转换的建议。
答案 0 :(得分:1)
我遇到了类似的问题并且使用了快速而肮脏的黑客攻击。在用于$ day属性的setter上,只需将时间设置为中午。
public function setDay(\DateTime $day)
{
$this->day = $day;
$this->day->setTime(12, 0, 0);
return $this;
}