Skip to content
Related Articles

Related Articles

Return all dates between two dates in an array in PHP
  • Last Updated : 21 Nov, 2018

Given two dates (start date and end date) and the task is to return all the dates in an array.

Example 1: In this example, use date interval class which stores fixed amount of time (in years, months, days, hours etc) or relative time string in the format that DateTime.




<?php
  
// Function to get all the dates in given range
function getDatesFromRange($start, $end, $format = 'Y-m-d') {
      
    // Declare an empty array
    $array = array();
      
    // Variable that store the date interval
    // of period 1 day
    $interval = new DateInterval('P1D');
  
    $realEnd = new DateTime($end);
    $realEnd->add($interval);
  
    $period = new DatePeriod(new DateTime($start), $interval, $realEnd);
  
    // Use loop to store date into array
    foreach($period as $date) {                 
        $array[] = $date->format($format); 
    }
  
    // Return the array elements
    return $array;
}
  
// Function call with passing the start date and end date
$Date = getDatesFromRange('2010-10-01', '2010-10-05');
  
var_dump($Date);
  
?>
Output:
array(5) {
  [0]=>
  string(10) "2010-10-01"
  [1]=>
  string(10) "2010-10-02"
  [2]=>
  string(10) "2010-10-03"
  [3]=>
  string(10) "2010-10-04"
  [4]=>
  string(10) "2010-10-05"
}

Example 2: This example use strtotime() function which is used to convert an English textual date-time description to a UNIX timestamp. It returns a timestamp on success, False otherwise.




<?php
  
// Declare two dates
$Date1 = '01-10-2010';
$Date2 = '05-10-2010';
  
// Declare an empty array
$array = array();
  
// Use strtotime function
$Variable1 = strtotime($Date1);
$Variable2 = strtotime($Date2);
  
// Use for loop to store dates into array
// 86400 sec = 24 hrs = 60*60*24 = 1 day
for ($currentDate = $Variable1; $currentDate <= $Variable2
                                $currentDate += (86400)) {
                                      
$Store = date('Y-m-d', $currentDate);
$array[] = $Store;
}
  
// Display the dates in array format
print_r($array);
?>
Output:
Array
(
    [0] => 2010-10-01
    [1] => 2010-10-02
    [2] => 2010-10-03
    [3] => 2010-10-04
    [4] => 2010-10-05
)



My Personal Notes arrow_drop_up
Recommended Articles
Page :