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 )