Symfony 将先前给定的\DateTime+;天

Symfony 将先前给定的\DateTime+;天,symfony,datetime,add,Symfony,Datetime,Add,我需要保留next\u payment\u date属性的值从开始,添加到check\u的值中,该值可以是30或60。换句话说,如果我的开始日期是2015-10-30,我需要增加30或60天,并设置为下一个付款日期 它是一种预更新方法,在将“我的预算”实体持久化到数据库中时执行: /** * @ORM\PrePersist * @ORM\PreUpdate */ public function onPre() { $this->getBudget()->setNextP

我需要保留
next\u payment\u date
属性
的值从
开始,添加到
check\u的值中,该值可以是
30
60
。换句话说,如果我的
开始日期
是2015-10-30,我需要增加30或60天,并设置为下一个付款日期

它是一种预更新方法,在将“我的预算”实体持久化到数据库中时执行:

/**
 * @ORM\PrePersist
 * @ORM\PreUpdate
 */
public function onPre()
{
    $this->getBudget()->setNextPaymentDate($this->generateNextPaymentDate());
}
第一次尝试设置我的下一个付款日期时:

public function generateNextPaymentDate()
{
    $startsAt = $this->getBudget()->getStartsAt();

    if ($startsAt !== null) {
        return $startsAt->add(new \DateInterval('P' . $this->getBudget()->getCheckFor() . 'D'));
    }
}
然后,我有了另一个想法。由于日期基本上为空,因此我在前面添加了
start\u at
值,然后进行了修改:

public function generateNextPaymentDate()
{
    $this->getBudget()->setNextPaymentDate($this->getBudget()->getStartsAt());

    return $this->getBudget()->getNextPaymentDate()->modify('+' . $this->getBudget()->getCheckFor() . ' day');
}

但不知何故,同样的结果也出现了。
starts\u at
属性随
next\u payment\u date
一起更新,两者的值相同。如果
$startsAt
是一个
Datetime
对象,我如何仅更新
下一个付款日期

public function generateNextPaymentDate()
{
    const NEXT_DATE = '+30days';

    $startsAt = $this->getBudget()->getStartsAt();

    if ($startsAt !== null) {
         return $startsAt->modify(self::NEXT_DATE);
    }
}

如果
$startsAt
Datetime
对象:

public function generateNextPaymentDate()
{
    const NEXT_DATE = '+30days';

    $startsAt = $this->getBudget()->getStartsAt();

    if ($startsAt !== null) {
         return $startsAt->modify(self::NEXT_DATE);
    }
}

这就是我找到的解决方案:

public function generateNextPaymentDate()
{
    $date = new \DateTime($this->getBudget()->getStartsAt()->format('Y-m-d'));
    return $date->add(new \DateInterval('P' . $this->getBudget()->getCheckFor(). 'D'));
}

这就是我找到的解决方案:

public function generateNextPaymentDate()
{
    $date = new \DateTime($this->getBudget()->getStartsAt()->format('Y-m-d'));
    return $date->add(new \DateInterval('P' . $this->getBudget()->getCheckFor(). 'D'));
}

您好,$this->getBudget()->getCheckFor()的值是多少?您能检查一下吗that@AshishAwasthi它是30或60。嗨,$this->getBudget()->getCheckFor()的值是多少that@AshishAwasthi它可能是30或60。它似乎会修改自己的
开始时间。我需要获取它的值并将30或60添加到下一个付款日期,而不修改
开始时间,明白吗?如果
开始日期是2015-10-30,我需要
下一个付款日期是2015-11-29。它似乎会修改自己的
开始日期。我需要获取它的值并将30或60添加到下一个付款日期,而不修改
开始时间,明白吗?如果
开始日期为2015-10-30,我需要
下一个付款日期为2015-11-29。