簡體   English   中英

在php中的日期之間包括范圍內的最后日期

[英]Include last date in range between dates in php

我發現使用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;
}

您應該為初始日期(不帶+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); 
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM