Разделение между двумя датами в php на конец года - PullRequest
0 голосов
/ 08 июня 2018

У меня есть случай с датой php.Как разделить между двумя датами, например.

$dateStart  = '2015-05-04';
$dateFinish = '2018-06-10';

Я хочу, чтобы вывод был массив, как это:

 |$dateStartArray   |$dateFinishArray   |       
 |  '2015-05-04',   |   '2015-12-31',   |   ----------->2015
 |  '2016-01-01',   |   '2016-05-03',   |   ----------->2016_1
 |  '2016-05-04',   |   '2016-12-31',   |   ----------->2016_2
 |  '2017-01-01',   |   '2017-05-03',   |   ----------->2017_1
 |  '2017-05-04',   |   '2017-12-31',   |   ----------->2017_2
 |  '2018-01-01',   |   '2018-05-03',   |   ----------->2018_1
 |  '2018-05-04',   |   '2018-06-10',   |   ----------->2018_2

Спасибо.

1 Ответ

0 голосов
/ 08 июня 2018

Вы можете выполнить цикл с начальным и конечным временем Unix, а затем манипулировать массивами в зависимости от того, пишете ли вы в начале года или в конце года.

Я использую $ i для отслеживания начала года или конца года.
Когда цикл завершен, я получаю последний элемент 2018-12-31, поэтому я заменяю его послепетля с финской датой.

$dateStart  = '2015-05-04';
$dateFinish = '2018-06-10';

$split = date("m-d", strtotime($dateStart)-86400);

$time = strtotime($dateStart);
$end = strtotime($dateFinish);


$i=1;
While($time<$end){
    If($i){
        $startarr[] = date("Y-m-d", $time);
        $endarr[] = date("Y-12-31", $time);
    }else{
        $startarr[] = date("Y-01-01", $time);
        $endarr[] = date("Y-" . $split, $time);
    }
    $i = !$i;
    // Add one day to last inserted end date
    $time = strtotime(end($endarr))+86400;
}

$endarr[count($endarr)-1] = $dateFinish;
Var_dump($startarr, $endarr);

https://3v4l.org/50AqX

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...