Título: Saber cuantos Domingos hay entre 2 fechas
Publicado por: FeArX en 11 Junio 2008, 20:40 pm
Hola, bueno, este es un pequeño aporte a la comunidad ;D function domingos($fechaInicio,$fechaFin) { $dias=array(); //creo un arreglo para devolver los domingos $fecha1=date($fechaInicio); $fecha2=date($fechaFin); $fecha=date("Y-m-d",strtotime($fecha1)); //paso a date para darle formato $fechaTime=strtotime($fecha1); //paso a hora unix fechaInicio
while($fecha <= $fecha2) //verifico que no me haya pasado de la fecha fin { //Ahora, el Unix timestamp para el primer lunes //después de fecha 1: $proximo_lunes=strtotime("next Monday",$fechaTime); $proximo_domingo=strtotime("next Sunday",$fechaTime); $fechaDomingo=date("Y-m-d",$proximo_domingo); if($fechaDomingo <= $fechaFin) { $dias[$fechaDomingo]=$fechaDomingo; } else { break; } $fechaTime=$proximo_lunes; $fecha=date("Y-m-d",$proximo_lunes); } return $dias; }//fin de domingos
$datos=domingos("2008-01-01","2008-12-31"); //creo un array que tendra las fechas
foreach($datos as $nombre_campo => $valor){ $asignacion = 'Domingo"' . $nombre_campo . ": " . $valor . "';<br>"; echo $asignacion; }//imprimo lo que esta en el array
Espero que les sirva... ya a mi me ha funcionado bien :rolleyes: pero si ven algun problema avisen
Título: Re: Saber cuantos Domingos hay entre 2 fechas
Publicado por: FeArX en 11 Junio 2008, 23:11 pm
Hola! bueno, después de hacer varias pruebas me di cuenta que si la fecha de inicio era un domingo ese domingo no lo contaba, asi que cambie el codigo: El cambio básicamente fue: la fecha de inicio la puse a que iniciara el dia de ayer, para así al hacer la búsqueda, del "next monday" lo encontrara. El otro cambio que le hice fue que ya busco es por domingo y no por lunes. Exito a todos, espero que les sirva /*Funcion que devuelve los dias domingo que caen entre 2 fechas*/ function contarDomingos($fechaInicio,$fechaFin) { $dias=array(); $fecha1=date($fechaInicio); $fecha2=date($fechaFin); $fechaTime=strtotime("-1 day",strtotime($fecha1));//Les resto un dia para que el next sunday pueda evaluarlo en caso de que sea un domingo $fecha=date("Y-m-d",$fechaTime); while($fecha <= $fecha2) { $proximo_domingo=strtotime("next Sunday",$fechaTime); $fechaDomingo=date("Y-m-d",$proximo_domingo); if($fechaDomingo <= $fechaFin) { $dias[$fechaDomingo]=$fechaDomingo; } else { break; } $fechaTime=$proximo_domingo; $fecha=date("Y-m-d",$proximo_domingo); } return $dias; }//fin de domingos
|