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

Chu*_*utt 6 php datetime

如何在DateTime不修改原始对象的情况下向对象添加天数.StackOverflow上的每个问题似乎都是关于date而不是DateTime,并且那些提到的问题DateTime谈论修改原始问题.

例如.

$date = new DateTime('2014-12-31');
$date->modify('+1 day');
Run Code Online (Sandbox Code Playgroud)

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

if($dateTimeNow > ($startDate + $daysOpen days) {
   //
}
Run Code Online (Sandbox Code Playgroud)

我总是可以创建另一个DateTime对象,但我宁愿按照上面的方式去做.

maz*_*tch 12

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

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


Viv*_*ngh 5

您可以将原始变量放入单独的变量中并添加 no。其他变量中的天数,因此您在不同变量中同时拥有(原始和更新)值。

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

您也可以随时使用clone

$datetime = clone $datetime_original;
Run Code Online (Sandbox Code Playgroud)

  • 嗨,Vicky,这是一个有效的选项,但我在我的问题中提到了这一点:“我总是可以创建另一个 DateTime 对象,但我宁愿按照上面的方式来做。” (2认同)
  • `$datetime = 克隆 $datetime_original;` (2认同)