Несколько примеров как найти все дни в промежутке между двумя датами в виде значения и списка.
$date_1 = '28.03.2022 00:00';
$date_2 = '02.04.2022 23:59';
$seconds = abs(strtotime($date_1) - strtotime($date_2));
echo round($seconds / 86400, 1); // 6
Если указать время:
Первый способ – использование классов DatePeriod, DateTime и DateInterval (доступны с версии PHP 5.3).
* Если в конечной дате не указать время (23:59), то в результирующем массиве не будет последнего дня.
$period = new DatePeriod(
new DateTime('28.03.2022'),
new DateInterval('P1D'),
new DateTime('02.04.2022 23:59')
);
$dates = array();
foreach ($period as $key => $value) {
$dates[] = $value->format('d.m.Y');
}
print_r($dates);
Результат:
Array
(
[0] => 28.03.2022
[1] => 29.03.2022
[2] => 30.03.2022
[3] => 31.03.2022
[4] => 01.04.2022
[5] => 02.04.2022
)
Функция на основе strtotime
function get_dates($start, $end, $format = 'd.m.Y')
{
$day = 86400;
$start = strtotime($start . ' -1 days');
$end = strtotime($end . ' +1 days');
$nums = round(($end - $start) / $day);
$days = array();
for ($i = 1; $i < $nums; $i++) {
$days[] = date($format, ($start + ($i * $day)));
}
return $days;
}
$dates = get_dates('28.03.2022', '02.04.2022');
print_r($dates);
Результат:
Array
(
[0] => 28.03.2022
[1] => 29.03.2022
[2] => 30.03.2022
[3] => 31.03.2022
[4] => 01.04.2022
[5] => 02.04.2022
)