Вернуть все даты между двумя датами в массиве в PHP
Опубликовано: 4 Февраля, 2022
Даны две даты (дата начала и дата окончания), и задача состоит в том, чтобы вернуть все даты в массиве.
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 )