Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: FeArX en 11 Junio 2008, 20:40 pm



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

Código:
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

Código:
/*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