如何在不修改原始对象的情况下向DateTime
对象添加天数。 StackOverflow上的每个问题似乎都是date
而不是DateTime
,而提及DateTime
的问题则涉及修改原文。
例如
$date = new DateTime('2014-12-31');
$date->modify('+1 day');
但是如何在不修改原件的情况下提前几天计算出日期,所以你可以这样写:
if($dateTimeNow > ($startDate + $daysOpen days) {
//
}
我总是可以创建另一个DateTime
对象,但我宁愿以上述方式执行此操作。
答案 0 :(得分:10)
使用DateTimeImmutable,它与DateTime相同,只是它从不修改自身,而是返回一个新对象。
答案 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;