Obtener meses dentro de un rango de fechas en php

publicado por: Anonymous

Hola quién me ayuda a obtener meses dentro de un rango de fechas ejemplo

$fechaRegistro="2017-07-21";
$fechaCorte="2017-11-21";

Quiero obtener los meses desde $fechaRegistro hasta $fechaCorte

He programado lo siguiente:

 Function contarMeses($a){
      $f1 = new DateTime( $a[0]);
      $f2 = new DateTime($a[1]);
      $d = $f1->diff($f2);
      $m = ($d->y * 12)+$d->m;
      Return $m;
    }

   function calculaFecha($a) { 
     $modo = ($a[0] == "months")? "months" : $a[0];
     $valor = $a[1];
     $fecha_inicio = strtotime($a[2]);
     $calculo = strtotime("$valor $modo","$fecha-inicio");
     Return date("Y-m-d",$calculo);
   }


  function verMeses($a){
      $f1 = $a[0];
      $f2 = $a[1];
      $countMeses = contarMeses(array($f1,$f2));

     $m = "";
     For($i = 0; $i < $countMeses ; $i++){
          $m .= calculaFecha( array("" , $i+1 , $f1)."<br>";
       }
       Echo $m;
      }

    verMeses(
        array(
            "2017-07-21",
             "2017-11-21"
        )
     );

solución

Creo que esta función te va a servir. ( lo deje un una sola )

  function verMeses($a){

   $f1 = new DateTime( $a[0] );
   $f2 = new DateTime( $a[1] );

  // mostrara las fechas
  echo "valor f1 : " . $f1->format('d-m-Y') . "n";
  echo "valor f2 : " . $f2->format('d-m-Y') . "n";

  // obtener la diferencia de fechas
  $d = $f1->diff($f2);
  $difmes =  $d->format('%m');

  echo " Cantidad de meses " . $difmes . "n";

  $impf = $f1;
  for($i = 1; $i <= $difmes; $i++){
      // despliega los meses
      $impf->add(new DateInterval('P1M'));
      echo  $impf->format('d-m-Y') . " - " .$i.  "n";
  }
}

 verMeses(  array(   "2017-07-21",   "2017-11-22" )    );
Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *