$date1 = $date2 = new DateTime();
$date2->add(new DateInterval('P3Y'));
現在$date1
和$date2
包含同一日期 - 從現在起三年。我想創建兩個單獨的日期時間,一個是從一個字符串中解析出來的,另一個是添加了三年的日期時間。目前我已經破解它:如何深度複製DateTime對象?
$date2 = new DateTime($date1->format(DateTime::ISO8601));
但這似乎是一個可怕的黑客。是否有一種「正確」的方法來深入複製DateTime對象?
我用了一個新的DateTime中的例子來演示點,但現在假設DateTime是從一些不透明的API返回的,我不能再重新調用它。例如,我有一個處理訂單的函數,返回一個DateTime,客戶可以下一個訂單。調用函數來創建副本會產生我不想要的副作用。 – 2010-04-05 16:19:47
我沒有真正測試過它,但是在php.net中提到它只適用於PHP 5.3及更高版本。 – 2013-02-01 01:02:02
@hugo:是的,DateTime類需要PHP 5.3。 – 2013-03-28 17:19:38