PHP: методы получения всех дней между двумя датами с примерами кода

Чтобы получить все дни между двумя датами в PHP, вы можете использовать различные методы. Вот несколько примеров:

Метод 1: использование цикла

function getDaysBetweenDates($startDate, $endDate)
{
    $days = array();
    $currentDate = strtotime($startDate);
    $endDate = strtotime($endDate);
    while ($currentDate <= $endDate) {
        $days[] = date('Y-m-d', $currentDate);
        $currentDate = strtotime('+1 day', $currentDate);
    }
    return $days;
}
// Usage
$startDate = '2024-01-01';
$endDate = '2024-01-10';
$days = getDaysBetweenDates($startDate, $endDate);
print_r($days);

Метод 2. Использование класса DatePeriod

function getDaysBetweenDates($startDate, $endDate)
{
    $start = new DateTime($startDate);
    $end = new DateTime($endDate);
    $end = $end->modify('+1 day'); // Include the end date
    $interval = new DateInterval('P1D');
    $period = new DatePeriod($start, $interval, $end);
    $days = array();
    foreach ($period as $date) {
        $days[] = $date->format('Y-m-d');
    }
    return $days;
}
// Usage
$startDate = '2024-01-01';
$endDate = '2024-01-10';
$days = getDaysBetweenDates($startDate, $endDate);
print_r($days);

Метод 3. Использование функции range()

function getDaysBetweenDates($startDate, $endDate)
{
    $days = array_map(function ($timestamp) {
        return date('Y-m-d', $timestamp);
    }, range(strtotime($startDate), strtotime($endDate), 86400));
    return $days;
}
// Usage
$startDate = '2024-01-01';
$endDate = '2024-01-10';
$days = getDaysBetweenDates($startDate, $endDate);
print_r($days);