Как получить первый и последний день каждого года в цикле с помощью PHP?

#php

Вопрос:

У меня есть диапазон лет, я хочу знать первый и последний день или дату каждого года. потому что мне нужно рассчитать все действия, которые были выполнены за каждый год. вот мой код:

 $years = range(2015, date('Y'));

foreach ($years as $year) {

   echo "Number of activities" . $year . "<br/>";
}
 

Мне нужно знать стратегию и дату окончания или день всех лет.
Я могу получить первый и последний день, как показано ниже, но это не очень хорошее приветствие:

 // for 2015
$firstDayOfYear = date('Y-m-d', strtotime('first day of january 2015'));
$lastDayOfYear = date('Y-m-d', strtotime('last day of december 2015'));
// for 2016
$firstDayOfYear = date('Y-m-d', strtotime('first day of january 2016'));
$lastDayOfYear = date('Y-m-d', strtotime('last day of december 2016'));
.
.
.
// until 2021
 

Когда количество лет увеличивается, вручную это невозможно. Потому что мне нужно отобразить их в виде диаграммы.
Кто-нибудь может мне помочь, пелеас ?

Комментарии:

1. Ну, во-первых, что мешает вам просто сделать часть года strtotime('first day of january 2015') динамичной? Вы ведь знаете, как работает объединение строк, не так ли?

2. Во-вторых, вам действительно нужно «вычислять» это? Мои годы всегда начинаются первого января и заканчиваются 31 декабря — предполагая, что ваши, вероятно, тоже, вы могли бы просто добавить -01-01 и -12-31 непосредственно к значению каждого года, которое вы там зацикливаете.

3. это ставит меня в тупик, потому что это динамичное решение, мне нужно каждый год добавлять на один год больше динамики.

4. И я только что рассказал вам о двух разных способах придать этому динамику …

Ответ №1:

Зацени это

 $start_year = '2015';
$last_year = date('Y');

for($start_year; $start_year <= $last_year; $start_year  ){
    echo $firstDayOfYear = date('Y-m-d', strtotime("first day of january {$start_year}"));
    echo $lastDayOfYear = date('Y-m-d', strtotime("last day of december {$start_year}"));
}
 

Комментарии:

1. Большое вам спасибо @Mainul Hasan, это именно то, чего я хочу

2. Всегда пожалуйста!

3. @WahidAMINI, если это сработает для вас, можете отметить это как полезный ответ; кому-то это пойдет на пользу.

4. Да, сделано полезно @MainulHasan

Ответ №2:

Попробуйте это решение:

 $years = range(2015, date('Y'));

$array = [];

foreach ($years as $year) {

    echo "Number of activities " . $year . "<br/>";

    $obj = (object)[];

    $obj->$firstDayOfYear = date('Y-m-d', strtotime('first day of january ' . $year));
    $obj->$lastDayOfYear = date('Y-m-d', strtotime('last day of december ' . $year));

    $array[$year] = $obj;
}

var_dump($array);
 

Комментарии:

1. Большое спасибо, мистер Шахид