我想获取两个给定特定日期之间的所有日期,这些日期将根据用户要求动态更改。
这对我来说很好:
$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会出错,因为我不了解它们的基础。
我需要在管理面板中获取图表的两个特定日期之间的所有日期。
答案 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是我找到此解决方案的参考,希望对其他人有帮助。