Как получить все дни между датами в PHP

Несколько примеров как найти все дни в промежутке между двумя датами в виде значения и списка.

$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
PHP

Если указать время:

$date_1 = '28.03.2022 00:00';
$date_2 = '02.04.2022 18:00';
$seconds = abs(strtotime($date_1) - strtotime($date_2));
echo round($seconds / 86400, 1); // 5.6
PHP

Первый способ – использование классов 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);
PHP

Результат:

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);
PHP

Результат:

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
)
05.04.2022, обновлено 13.04.2022
1451

Комментарии

, чтобы добавить комментарий.

Другие публикации

date() – форматирование даты PHP
date($format, $timestamp) – форматирует дату/время по шаблону, где...
34185
+3
Заполненные PHP-массивы для дат
Заполненные PHP-массивы с элементами дат для проверки данных, операций с датами, вывода списков в формах и т.д.
4033
+1
Автоматическая установка временной зоны у пользователя
date_default_timezone_set устанавливает часовой пояс, который по умолчанию используется всеми дата/время функциями.
3847
+4
Как настроить Last-Modified
Заголовок Last-Modified помогает оптимизировать загрузку web-страниц и облегчить работу поисковым роботам.
6087
+1
Выбор времени в UI Datepicker
Плагин Timepicker легко добавляет возможность выбора времени в UI Datepicker.
15547
+1
Вывод даты с русскими месяцами
PHP-функция для вывода даты в привычном формате из метки unix timestamp.
3974
+4