在php中包含日期范围内的最后日期

在php中包含日期范围内的最后日期,php,date,Php,Date,我发现使用DatePeriod时出现问题,可能是因为我很笨。lol. 如您所见,我在结束日期中添加了+1,因为我希望包括范围的最后日期。 但我的问题是,当我有结束日期31时,它会变为32,而这不是一个日期,所以它会抛出一个错误。 是否有办法包括结束日期或使+1起作用 $period = new DatePeriod( new DateTime($event['startyear'].$event['startmonth'].$event['startdate']), new Da

我发现使用DatePeriod时出现问题,可能是因为我很笨。lol.
如您所见,我在结束日期中添加了+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;
}

您应该为初始日期(不带+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);
那么这个呢:

$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); 
}

那么这是否意味着将我的查询信息放入一个strotime,然后添加一天?很抱歉,我对phpSee非常陌生,请参阅我更新的示例。创建两个日期对象,将第二个对象的值增加一天,然后将这两个对象传递到
DatePeriod
唯一的问题是,当日期在31结束时,它不会被添加,除非它工作正常。您可以使用try catch blockYes继续运行。我看到了,但是31事件是否仍会显示?如果您想要的话,是的!在“catch”块中,您可以处理it@rm596-虽然这在技术上是可行的,但这不是解决这个问题的正确方法。我感觉这与javascript、HTML或CSS无关。现在试试吧。对不起,是我的错