PHP-获取两个动态用户输入日期之间的所有日期

时间:2018-08-11 05:50:01

标签: php laravel date

我想获取两个给定特定日期之间的所有日期,这些日期将根据用户要求动态更改。

这对我来说很好:

$begin = new DateTime( '2018-07-01' ); 
$end = new DateTime( '2018-08-10' );
$end = $end->modify( '+1 day' ); 
$interval = new DateInterval('P1D');
$daterange = new DatePeriod($begin, $interval ,$end);

$dates = [];

foreach($daterange as $date){
    array_push($dates,$date->format('Y-m-d'));
}

return $dates;

但是当我动态插入日期时,这给了我NULL数组。例如,

$begin = new DateTime($request->date1); 
$end = new DateTime(today()); 
$interval = new DateInterval('P1D');
$daterange = new DatePeriod($begin, $interval ,$end);

$dates = [];

foreach($daterange as $date){
    array_push($dates,$date->format('Y-m-d'));
}

return dates;

我尝试了很多输入,例如将今天的日期存储在变量中,更改其格式,然后将该变量用作输入。我尝试使用(string)函数将date变量更改为string,并且我已经将Carbon类用于日期,但是以某种方式我使用DateTime,DateInterval和DatePeriod会出错,因为我不了解它们的基础。

我需要在管理面板中获取图表的两个特定日期之间的所有日期。

1 个答案:

答案 0 :(得分:2)

最后找到了这个问题的解决方案。它通过将日期转换为UNIX时间戳来工作。这是代码,它是如何工作的:

$date_from = "2018-07-01";   
$date_from = strtotime($date_from); // Convert date to a UNIX timestamp  

// Specify the end date. This date can be any English textual format  
$date_to = strtotime(today()); // Convert date to a UNIX timestamp  

$dates = [];

// Loop from the start date to end date and output all dates inbetween  
for ($i=$date_from; $i<=$date_to; $i+=86400) {  
    array_push($dates,date("Y-m-d", $i));  
}

return $dates;

Here是我找到此解决方案的参考,希望对其他人有帮助。