Php 如何修改原始DateTime对象而不更改其值?

Php 如何修改原始DateTime对象而不更改其值?,php,datetime,Php,Datetime,我尝试使用OOP方式获取当前日期/时间,如下所示: $now = new \DateTime(); // 2015-05-24 11:21:36 -> this works fine 我还向同一个对象添加了1周的时间$now,所以我这样做了: $expireTime = $now->modify('+1 week'); // 2015-05-31 11:21:36 -> this also works fine 如果我这样做,使用相同的方法: echo $now; //

我尝试使用OOP方式获取当前日期/时间,如下所示:

$now = new \DateTime(); // 2015-05-24 11:21:36 -> this works fine
我还向同一个对象添加了1周的时间
$now
,所以我这样做了:

$expireTime = $now->modify('+1 week'); // 2015-05-31 11:21:36 -> this also works fine
如果我这样做,使用相同的方法:

echo $now; 
// Output: 2015-05-31 11:28:59
// Got wrong value, should be original date without modification

echo $expireTime;
// Output: 2015-05-31 11:28:59 
// Got the right value since I have added 1 week
为什么??如何在不修改原始对象的情况下添加一周


编辑:我通过克隆原始对象并修改克隆的对象找到了解决方案,但我想知道这种行为是否正确,以及为什么您可能正在查找类,它是相同的,但不会更改原始值。从手册开始:

此类的行为与DateTime相同,只是它从不修改自身,而是返回一个新对象