我遇到了一个奇怪的问题,与DateTime的modify()函数有关。
我开始有一个DateTime,例如:2018-08-07 12:00,和要添加的天数,例如:2。
我将dateTime(在变量$startDt中)复制到一个新变量($date)中,以便它不受任何更改的影响。
modify()函数工作正常。我得到了2018-08-09 12:00。但是,我想重复使用相同的起始日期,但是添加一个新的数字。比如+3。
但是它总共添加了5!我检查了一下,当在$date上使用modify()时,它会以某种方式同时更改$startDt。
有人能向我解释这个奇迹吗?:))如何应用函数于变量2会影响变量1?即使变量2最初是变量1的克隆;它们应该是两个独立的实体...
while ($x < $duration) {
$date = $startDt;
echo "$startDt before:" . $startDt->format('Y-m-d') . "<br>";
$date = $date->modify('+' . $x . 'day');
echo "$startDt after:" . $startDt->format('Y-m-d') . "<br>";
$x++;
}
结果:
$startDt before +2 : 2018-08-08
$startDt after: 2018-08-10
$startDt before +3 : 2018-08-10
$startDt after: 2018-08-13
clone
,或者您可以使用DateTimeImmutable
类。 - iainn