Foros del Web » Programando para Internet » PHP »

Problema al restar fechas

Estas en el tema de Problema al restar fechas en el foro de PHP en Foros del Web. Hola a todos. Necesito restar 2 fechas capturadas en un formulario y obtener la diferencia en dias entre ellas para despues realizar algunos cálculos. Todo ...
  #1 (permalink)  
Antiguo 22/12/2003, 02:57
 
Fecha de Ingreso: diciembre-2003
Mensajes: 8
Antigüedad: 20 años, 3 meses
Puntos: 0
Pregunta Problema al restar fechas

Hola a todos.

Necesito restar 2 fechas capturadas en un formulario y obtener la diferencia en dias entre ellas para despues realizar algunos cálculos. Todo esto lo voy a realizar en PHP.

En este mismo foro he visto un script para calcular los dias on-line de una página y lo he intentado aplicar pero resulta que el resultado que obtengo en algunos casos es incorrecto. Por ejemplo:

$fecha1 = mktime(0,0,0,01,07,2004);
$fecha2 = mktime(0,0,0,02,09,2004);
$dias = round(($fecha2 - $fecha1)/86400);
echo $dias;

Con esto obtengo de resultado 24 dias, siendo el resultado correcto 31.

Puede ser que no haya entendido bien el funcionamiento de mktime o no se que, pero espero que alguien pueda ayudarme...

Thanks...
  #2 (permalink)  
Antiguo 22/12/2003, 03:17
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 9 meses
Puntos: 16
Hola,

Al principio pense que era un bug, porque hacia:
Código PHP:
echo '<br>'.date('Y-m-d',$fecha1).'<br>'.date('Y-m-d',$fecha2); 
y sacaba fechas disitintas a las que habias metido en el mktime.

Luego tuve una "feliz idea" y quite los 0 de las cifras de 2 digitos:
Código PHP:
$fecha1 mktime(0,0,0,1,7,2004);
$fecha2 mktime(0,0,0,2,9,2004); 
$dias round(($fecha2 $fecha1)/86400);
echo 
$dias
y salio el resultado correcto.

Y luego recorde que en PHP un numero que empieza por 0 es un numero octal (en base 8), en lugar de un numero decimal (en base 10). Y en octal el digito 9 no existe, con lo que 09 no es un numero octal valido, con lo que estabas especificando 2,0,2004, o lo que es lo mismo, el 31 de enero, 24 dias despues del 7 de enero.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #3 (permalink)  
Antiguo 22/12/2003, 03:28
 
Fecha de Ingreso: diciembre-2003
Mensajes: 8
Antigüedad: 20 años, 3 meses
Puntos: 0
Problema al restar fechas

Muchas gracias Josemi

La verdad es que a mi no se me hubiera ocurrido... esta perfecto.

En este momento estaba buscando en la página oficial de php, en las notas, aunque el inglés no se me da mucho...

Encontré algo tambien... te lo pongo a tu disposición:

$start = gregoriantojd($smon, $sday, $syear);
$end = gregoriantojd($emon, $eday, $eyear);
$daysdiff = $end - $start;

Hace lo mismo.

Te agradezco nuevamente tu ayuda... hasta pronto... porque claro que volvere, siempre surgen dudas y es bueno saber que hay personas con la capacidad y sobre todo con la disposición para ayudar...
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:47.