Je dois montrer combien d'utilisateurs se sont inscrits chaque mois après un certain mois et une certaine année jusqu'au mois en cours et à l'année en cours.

Par exemple: si nous prenons les données du 3ème mois de 2015.

Ainsi, la sortie sera comme:

03/2015
04/2015
05/2015
...
and so on upto
12/2015
01/2016
as currently 1st month of 2016 is running.

De l'aide??

Voici un code que j'ai essayé:

$c_month = date('m');
$c_year = date('Y');
$year_array = array("2015","2016","2017","2018","2019","2020","2021");



foreach($year_array as $y_a){
   for($i=1;$i<=12;$i++){
   if(($i == 1 || $i == 2) && $y_a == '2015'){
       continue;
   }
   if($i > $c_month && $y_a == $c_year){
   break 2;
 }
 $chnge_i = strlen($i);
                    if ($chnge_i == 1) {
                        $put_o = '0' . $i;
                    }
                    else{
                        $put_o = $i;
                    }
 echo $put_o.'/'.$y_a.'<br>';
}
}

Il donne des valeurs correctes sauf si le numéro du mois en cours est 12 et je ne pense pas que ce soit la meilleure façon de le faire.

php
2
Anurag Jain 1 janv. 2016 à 10:12

2 réponses

Meilleure réponse

Vous pouvez utiliser strtotime et date pour ce faire.

$start=strtotime('2015-03-01');
while ($start <= time()){
    echo date('m/Y',$start) . "\n";
    $start=strtotime('+1 month', $start);
}

Production:

03/2015
04/2015
05/2015
06/2015
07/2015
08/2015
09/2015
10/2015
11/2015
12/2015
01/2016

Remarque: ce n'est qu'une des façons.

Remarque importante: n'oubliez pas de définir le fuseau horaire (je préférerais UTC) date_default_timezone_set

2
bansi 1 janv. 2016 à 07:28

Vous devriez faire la différence comme ci-dessous

//previous date
$start    = (new DateTime('2013-12-02'))->modify('first day of this month');
// current date
$end      = (new DateTime('2015-12-06'))->modify('first day of this month');
$interval = DateInterval::createFromDateString('1 month');
    $period   = new DatePeriod($start, $interval, $end);

foreach ($period as $dt) {
    echo $dt->format("m/Y") . "<br>\n";
}

J'espère que cela t'aides.

0
vrn53593 1 janv. 2016 à 07:49