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。