使用DateInterval将Date添加到DateTime会更改原始日期以匹配新日期

dal*_*len 8 php datetime

我有这个非常简单的代码:

$start_date = new DateTime($post['start_date']);
$end_date = $start_date->add(new DateInterval('P6M'));
echo $start_date->getTimestamp(); // 1351836000
echo $end_date->getTimestamp(); // 1351836000
Run Code Online (Sandbox Code Playgroud)

当然,两者都以相同的时间戳结束,因为添加日期间隔会影响原始的$ start_date.那么我该如何解决这个问题呢?所以我可以保留原来的$ start_date,然后在另一个变量中添加6个月?

我试了这个没有运气:

$start_date = new DateTime($post['start_date']);
$start_date_actual = $start_date;
$end_date = $start_date_actual->add(new DateInterval('P6M'))->getTimestamp();
Run Code Online (Sandbox Code Playgroud)

Mar*_*eed 17

变量保存对象的引用,而不是对象本身.因此赋值只会获得指向同一对象的更多变量,而不是对象的多个副本.

如果您想要副本,请使用以下clone关键字:

$end_date = clone $start_date;
$end_date->add(new DateInterval('P6M'));
Run Code Online (Sandbox Code Playgroud)