PHP - Eventos periódicos por mes

   
Vista:

Eventos periódicos por mes

Publicado por Isaac (5 intervenciones) el 10/07/2017 17:06:52
Hola a todos, intento crear una función que me devuelva un array de fechas, todo esto del primer lunes del mes, por cada dos meses y esto de un rango de fechas. Con respecto a los días, puede variar puede ser el primer lunes o martes o jueves o viernes del mes y esto por cada dos o tres o cuatro meses. Espero su apoyo Gracias.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?php
function obtener_primer_Lunes($fecha1){
// inicio obtener primer lunes de cada mes
$arrayprimermes = array();
$arraylunesano = array();
$primerdiaano   = substr($fecha1,0,4);
 
$dt = new DateTime($primerdiaano . '-07-01');
for ($i=1; $i<=12; $i++){
    array_push($arrayprimermes, $dt->format('Y-m-d'));
 
    //buscar lunes
    $dt_busjue = new DateTime( $dt->format('Y-m-d') );
    $bandenc = false;
    for ($s=0; $s<= 6; $s++){
       if($bandenc == true) continue ;
       if($dt_busjue->format('w') == '1' ){
          $dt_busjue->format('Y-m-d') . "". $dt_busjue->format('m');
          array_push( $arraylunesano,
                      $dt_busjue->format('Y-m-d'));
          $bandenc = true;
        }
        $dt_busjue->modify("+1 days"); //igual puede sel el primer o segundo lunes de cada mes 
    }
 
    $dt->modify("+1 month"); //  esto puede variar  puede ser por 1 o 2 o 3  meses
}
 
return $arraylunesano;
}
 
$fecha1 = '2017-07-01' ;
 
$arrayFechas=obtener_primer_Lunes($fecha1);
 
foreach ($arrayFechas as $value) {
	echo $value."<br>";
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Eventos periódicos por mes

Publicado por Isaac (5 intervenciones) el 11/07/2017 00:47:43
Bueno logre resolver este tema. De seguro hay muchas formas de hacerlo, pero igual lo comparto. Si hay correcciones con gusto lo estaré analizando.

1
2
3
4
5
6
7
8
9
10
11
<?php
 
$fecha1 = "2017-07-01";
$fecha2 = "2017-12-31";
 
for($i=$fecha1;$i<=$fecha2;$i = date("Y-m-d", strtotime($i ."+ 2 month"))){
   $nuevafecha1 = strtotime ( '+ 0 week mon ' , strtotime ($i));
   echo  date('Y-m-d',$nuevafecha1)."<br>";
 
}
?>

Resultado.
2017-07-03
2017-09-04
2017-11-06
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de kip

Eventos periódicos por mes

Publicado por kip (861 intervenciones) el 11/07/2017 04:09:07
Gracias por compartir tu solucion !

Una correcion, no es necesario el + 0 week que colocas antes del mon.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar