Вернуть все даты между двумя датами в массиве в 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 rangefunction 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 dayfor ($currentDate = $Variable1; $currentDate <= $Variable2; $currentDate += (86400)) { $Store = date("Y-m-d", $currentDate);$array[] = $Store;} // Display the dates in array formatprint_r($array);?> |
Output:
Array
(
[0] => 2010-10-01
[1] => 2010-10-02
[2] => 2010-10-03
[3] => 2010-10-04
[4] => 2010-10-05
)