如何为DateInterval添加指定变量的日期?
<?php
$begin = new DateTime('2010-01-01 08:00');
$end = new DateTime( '2010-01-05 20:00');
$interval = new DateInterval('P1D');
$period = new DatePeriod($begin, $interval, $end);
foreach ( $period as $dt ) {
$tempBegin = $tempEnd = $dt;
$tempEnd->add(new DateInterval('P1D'));
echo $tempEnd->format( "Y-m-d H:i" ) . '<br/>';
echo $tempBegin->format( "Y-m-d H:i" ) . '<br/>';
}
它会得到如下结果:
2010-01-02 08:00
2010-01-02 08:00
2010-01-03 08:00
2010-01-03 08:00
2010-01-04 08:00
2010-01-04 08:00
2010-01-05 08:00
2010-01-05 08:00
2010-01-06 08:00
2010-01-06 08:00
我想为$tempBegin
变量添加1天。
答案 0 :(得分:3)
分配对象时,您无法复制。因此,变量$tempBegin
和$tempEnd
都引用同一个对象,当您使用add()
修改它时,它会修改两个变量引用的对象。
您需要克隆对象:
$tempBegin = $dt;
$tempEnd = clone $tempBegin;
$tempEnd->add(new DateInterval('P1D'));