我有一个变量invoiceDate
,它是一种datetime
类型。我通过向dueDate
添加14天,得出以下内容来计算invoiceDate
:
private $invoiceDate; // this is any datetime.
private $dueDate;
public function calculateDueDate(){
$due = date_add($this->invoiceDate, new \DateInterval('P14D')) ;
return $due;
}
public function getInvoiceDate()
{
return $this->invoiceDate;
}
public function getDueDate()
{
$this->dueDate = $this->calculateDueDate();
return $this->dueDate;
}
我没有得到的是,当我使用方法getDueDate()
或getInvoiceDate()
时,两种方法都总是得到原始的invoiceDate
加14天。为什么原始日期会受到影响,我该怎么办?
答案 0 :(得分:4)
打开date_add
手册,发现date_add
的第一个参数是:
DateTime
返回的date_create()
对象。函数修改此对象。
因此,您需要修改另一个对象,例如克隆:
public function calculateDueDate(){
$due = date_add(
clone $this->invoiceDate,
new \DateInterval('P14D')
);
return $due;
}