date_add获取布尔值而不是DateTime

时间:2017-06-09 14:22:01

标签: php symfony datetime php-7

我的Symfony应用程序中有一个非常奇怪的错误,我不知道如何修复它。我想在添加特殊DateTime之后在我的一个实体中设置DateTime DateInterval。这是我的代码:

$dateInterval = new \DateInterval('P1DT6H');
$snoozedTo = date_add($sickNote->getSickTo(), $dateInterval);
$channelUser->setSnoozedTo($snoozedTo);
$this->em->persist($channelUser);

在我的UnitTests中,我收到以下错误:

date_add() expects parameter 1 to be DateTime, boolean given

所以我仔细检查$sickNote->getSickTo()是否真的返回DateTimedump()返回:

DateTime {#17791
  +"date": "2018-01-01 06:00:00.000000"
  +"timezone_type": 3
  +"timezone": "UTC"
}
对象上的

get_class()返回DateTime

以下是该字段的其他getter方法:

/**
 * Get sickTo
 * @return Date
 */
public function getSickTo() {
    return $this->sickTo;
}

为什么date_add获得Boolean而不是DateTime对象?

修改:我还尝试了objet方法DateTime::add()。结果相同。

编辑²:这是我对sickTo的声明:

/**
 * @var datetime $sickTo
 * @ORM\Column(type="date", nullable=true)
 * @Assert\Date()
 */
protected $sickTo;

1 个答案:

答案 0 :(得分:0)

sickTo的声明是错误的。您将其声明为日期但使用日期时间。尝试用类似的东西来改变它:

/**
 * @var \DateTime $sickTo
 * @ORM\Column(type="datetime", nullable=true)
 * @Assert\DateTime()
 */

protected $sickTo;