在PHP中添加DateTime到DateTime - 无需修改原始版本

时间:2015-04-23 11:24:20

标签: php datetime

如何在不修改原始对象的情况下向DateTime对象添加天数。 StackOverflow上的每个问题似乎都是date而不是DateTime,而提及DateTime的问题则涉及修改原文。

例如

$date = new DateTime('2014-12-31');
$date->modify('+1 day');

但是如何在不修改原件的情况下提前几天计算出日期,所以你可以这样写:

if($dateTimeNow > ($startDate + $daysOpen days) {
   //
}

我总是可以创建另一个DateTime对象,但我宁愿以上述方式执行此操作。

2 个答案:

答案 0 :(得分:10)

使用DateTimeImmutable,它与DateTime相同,只是它从不修改自身,而是返回一个新对象。

http://php.net/manual/en/class.datetimeimmutable.php

答案 1 :(得分:3)

您可以将原始变量放在单独的变量中并添加否。在其他变量中的天数,所以你在不同的变量中都有(原始和更新的)值。

    $startDate = new DateTime('2014-12-31');    
    $endDate = clone $startDate;
    $endDate->modify('+'.$days.'days');
    echo $endDate->format('Y-m-d H:i:s');

您也可以随时使用clone

$datetime = clone $datetime_original;