在php中包含日期之间的最后日期

时间:2014-03-30 23:28:58

标签: php date

我发现使用DatePeriod有问题,这可能是因为我很愚蠢 正如您所看到的,我在结束日期添加了+1,因为我想要包含范围的最后日期 但我的问题是,当我有结束日期31时,它使它达到32,这不是一个日期,所以它抛出一个错误 有没有办法包括结束日期或使+1工作?

$period = new DatePeriod(
    new DateTime($event['startyear'].$event['startmonth'].$event['startdate']),
    new DateInterval('P1D'),
    new DateTime($event['endyear'].$event['endmonth'].$event['enddate'] +1)  
);

foreach ($period as $savedDate) {   
    echo $savedDate;
}

2 个答案:

答案 0 :(得分:10)

您应该为初始日期创建日期对象(不包括+1),然后将该对象的日期增加1天。

例如:

$date1 = new DateTime($event['endyear'].$event['endmonth'].$event['enddate']);
$date2 = new DateTime($event['endyear'].$event['endmonth'].$event['enddate']);
$date2->modify('+1 day');

$period = new DatePeriod($date1, new DateInterval('P1D'), $date2);

答案 1 :(得分:0)

这个怎么样:

$endDate = mktime(0,0,0, $event['endmonth'], $event['enddate'], $event['endyear']); 

$counter = 0; 

while($endDate >= $date = mktime(0,0,0, $event['startmonth'], $event['startdate']+$counter++,     $event['startyear']) ) {    
  echo date('Y/m/d', $date); 
}