Comentarios sin revisar del artículo: Calcular días entre dos fechas con PHP

5 comentarios sin revisar
21/1/08

Por: tachys
Existe un error en el codigo, la funcion floor no redondea correctamente, la correcta seria la funcion round.
Este script lo prueba
<?php
$FechaIn="2008-12-31";//colocar un dia antes de la fecha del equipo donde se vaya a probar
$fecha_in_reserva = strtotime($FechaIn);//pasamos fecha a formato unix
for($n=0;$n<=365;$n++)
{
$FechaOut =date("Y-m-d", mktime(0, 0, 0, date("m") , date("d")+$n, date("Y")));
$fecha_out_reserva = strtotime($FechaOut);//pasamos fecha a formato unix
$dias_unix = $fecha_out_reserva - $fecha_in_reserva;//obtenemos numero de dias en formato unix

//obtenemos numero de dias en formato normal con floor descomentar para ver con floor
//y comentar la linea de round
//$dias = floor($dias_unix/86400);//linea de floor

//obtenemos numero de dias en formato normal con round descomentar para ver con round
//y comentar la linea de floor
$dias = round($dias_unix/86400);
$diasreal =$n+1;
echo 'Fecha inicio '.$FechaIn.' Fecha fin '.$FechaOut.' dias verdaderos '.$diasreal.'='.$dias.'dias coontados';
if ($dias!=$diasreal)
{
echo 'EROOORRRRRRRRRRRRRR';
}
echo '
<br/>';
}
?>
12/2/09

Por: visof
Para saber el numero de semanas se puede utilizar una constante

formato fecha: aaaa-mm-dd

$c = strtotime($fecha_final) - strtotime($fecha_inicial);
$semanas = ($c / 604800);

09/5/09
diferencia entre floor o round
Por: Nico
Muy bueno el script.
La diferencia entre usar floor o round depende de lo que busquemos.
Ejemplo:
Si el resultado da 2.6 usaremos floor si necesitamos la cantidad de dias completos(2 en este caso), en cambio si necesitamos un valor aproximado sin precision podemos usar round y asi nos daria 3.
Saludos.
02/8/09
barbaro
Por: argentina
buenisimo me sirvio mucho muy bien explicado!!

muchas gracias x el articulo!
22/9/09
Solucion mas facil
Por: kalep
La manera mas facil es convertir la fecha a calendario Juliano, el cual convierte la fecha en calendario juliano, despues simplemente resta los numeros y obtendras el numero de dias exactos.
$jul1=juliantojd(9,25,2002);
$jul=juliantojd(11,25,2002);
echo '->'."$jul",' dias '.($jul-$jul1);
tambien puedes sumar los dias al dia juliano y convertirlo a la fecha deseada
echo 'Juliano 1 '.jdtojulian(2452556);
echo ' juliano '.juliantojd(9,25,2002);
Os espero les haya servido esta solucion, es la mas facil

Alojados en el grupo