2012-05-02 23 views
6

と一致するように、元の日付を変更し、私はこの非常に単純なコードを持っている:もちろんはDateIntervalでの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 

を、両方の日付間隔を追加すると、元の$ 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(); 

答えて

12

変数はオブジェクトではなく、オブジェクト自体への参照を保持します。したがって、代入は、オブジェクトの複数のコピーではなく、同じオブジェクトを指すより多くの変数を取得します。

あなたがcloneキーワードを使用し、コピーをしたい場合:

$end_date = clone $start_date; 
$end_date->add(new DateInterval('P6M')); 
+0

が何か新しい日常をご覧ください。ありがとう、マーク! – dallen

1

あなたの好きなものを取ることができます:

$start_date = new DateTime($post['start_date']); 
$end_date = new DateTime($post['start_date']); 
$end_date->add(new DateInterval('P6M')); 

または

$start_date = new DateTime($post['start_date']); 
$end_date = clone $start_date; 
$end_date->add(new DateInterval('P6M')); 
関連する問題