PHP为指定变量添加日期函数

时间:2014-06-19 23:35:22

标签: php

如何为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天。

1 个答案:

答案 0 :(得分:3)

分配对象时,您无法复制。因此,变量$tempBegin$tempEnd都引用同一个对象,当您使用add()修改它时,它会修改两个变量引用的对象。

您需要克隆对象:

$tempBegin = $dt;
$tempEnd = clone $tempBegin;
$tempEnd->add(new DateInterval('P1D'));