如何在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
您可以将原始变量放入单独的变量中并添加 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)