<?php
/**
* @param string $start
* @param string $end
*
* @return string[]
*/
function date_period_grid($start, $end)
{
$start = new DateTime($start);
$end = new DateTime($end);
$interval = $end->diff($start);
$days = $interval->days;
$months = $interval->y * 12 + $interval->m;
$years = intval($end->format('Y')) - intval($start->format('Y'));
if ($years > 1) {
$period = new DatePeriod($start, new DateInterval('P1Y'), $years);
$format = 'Y';
} elseif ($months > 1) {
$period = new DatePeriod($start, new DateInterval('P1M'), $months);
$format = 'm.Y';
} else {
$period = new DatePeriod($start, new DateInterval('P1D'), $days);
$format = 'd.m.Y';
}
$result = [];
foreach ($period as $date) {
$result[] = $date->format($format);
}
return $result;
}
var_dump(date_period_grid('2012-07-01', '2015-11-01'));
var_dump(date_period_grid('2015-01-01', '2015-11-01'));
var_dump(date_period_grid('2015-10-01', '2015-11-01'));
- Output for 5.4.0 - 5.4.45, 5.5.0 - 5.5.38, 5.6.0 - 5.6.40, 7.0.0 - 7.0.33, 7.1.0 - 7.1.33, 7.2.0 - 7.2.34, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.28, 8.2.0 - 8.2.18, 8.3.0 - 8.3.6
- array(4) {
[0]=>
string(4) "2012"
[1]=>
string(4) "2013"
[2]=>
string(4) "2014"
[3]=>
string(4) "2015"
}
array(11) {
[0]=>
string(7) "01.2015"
[1]=>
string(7) "02.2015"
[2]=>
string(7) "03.2015"
[3]=>
string(7) "04.2015"
[4]=>
string(7) "05.2015"
[5]=>
string(7) "06.2015"
[6]=>
string(7) "07.2015"
[7]=>
string(7) "08.2015"
[8]=>
string(7) "09.2015"
[9]=>
string(7) "10.2015"
[10]=>
string(7) "11.2015"
}
array(32) {
[0]=>
string(10) "01.10.2015"
[1]=>
string(10) "02.10.2015"
[2]=>
string(10) "03.10.2015"
[3]=>
string(10) "04.10.2015"
[4]=>
string(10) "05.10.2015"
[5]=>
string(10) "06.10.2015"
[6]=>
string(10) "07.10.2015"
[7]=>
string(10) "08.10.2015"
[8]=>
string(10) "09.10.2015"
[9]=>
string(10) "10.10.2015"
[10]=>
string(10) "11.10.2015"
[11]=>
string(10) "12.10.2015"
[12]=>
string(10) "13.10.2015"
[13]=>
string(10) "14.10.2015"
[14]=>
string(10) "15.10.2015"
[15]=>
string(10) "16.10.2015"
[16]=>
string(10) "17.10.2015"
[17]=>
string(10) "18.10.2015"
[18]=>
string(10) "19.10.2015"
[19]=>
string(10) "20.10.2015"
[20]=>
string(10) "21.10.2015"
[21]=>
string(10) "22.10.2015"
[22]=>
string(10) "23.10.2015"
[23]=>
string(10) "24.10.2015"
[24]=>
string(10) "25.10.2015"
[25]=>
string(10) "26.10.2015"
[26]=>
string(10) "27.10.2015"
[27]=>
string(10) "28.10.2015"
[28]=>
string(10) "29.10.2015"
[29]=>
string(10) "30.10.2015"
[30]=>
string(10) "31.10.2015"
[31]=>
string(10) "01.11.2015"
}
preferences:
258.18 ms | 408 KiB | 385 Q