Saber cuantos Domingos hay entre 2 fechas

Iniciado por FeArX, 11 Junio 2008, 20:40 PM

0 Miembros y 1 Visitante están viendo este tema.

FeArX

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
Solo los mas debiles son los que no quieren ni estan dispuestos a dejar de depender de los demas

FeArX

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

Solo los mas debiles son los que no quieren ni estan dispuestos a dejar de depender de los demas