Foros del Web » Programando para Internet » PHP »

problemas con calculo de dias

Estas en el tema de problemas con calculo de dias en el foro de PHP en Foros del Web. Hola .... estoy tratando de calcular cuantos dias hay entre dos fechas, y por mas que lo intento no obtengo ningun buen resultado. El caso ...
  #1 (permalink)  
Antiguo 28/07/2004, 16:40
Avatar de midpunto  
Fecha de Ingreso: enero-2004
Ubicación: España Palma de mallorca
Mensajes: 118
Antigüedad: 20 años, 10 meses
Puntos: 0
problemas con calculo de dias

Hola ....
estoy tratando de calcular cuantos dias hay entre dos fechas, y por mas que lo intento no obtengo ningun buen resultado.
El caso es el siguiente :
tengo un formulario en el cual ingreso dos fechas en dos campos separados
fecha y fecha2 en formato dd/mm/aaaa

<?
include ("calendario/calendario.php");
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>formulario</title>
<script language="JavaScript" src="calendario/javascripts.js"></script>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<form action="calcula.php" method="post" name="fcalen" id="fcalen">
</label>
</p>
<p>Inicio:
<?
escribe_formulario_fecha_vacio("fecha","fcalen");
?>
</p>
<p>entrega:
<?
escribe_formulario_fecha_vacio("fecha2","fcalen");
?>
</p>
<label>
<input type="submit" name="Submit" value="Enviar">
</label>
</form>
</body>
</html>


despues las envio mediante post a otra pagina donde tengo el siguiente Script :

<?php
$fecha = $_POST[fecha];
$fecha2 = $_POST[fecha2];
$_POST[auto];
//funcion calculo de dias::::
function dias_entre_fechas($fecha, $fecha2)
{
$dia1 = strtok($fecha, "/");
$mes1 = strtok("/");
$anyo1 = strtok("/");

$dia2 = strtok($fecha2, "/");
$mes2 = strtok("/");
$anyo2 = strtok("/");

$num_dias = 0;

if ($anyo1 < $anyo2)
{
$dias_anyo1 = date("z", mktime(0,0,0,12,31,$anyo1)) - date("z", mktime(0,0,0,$mes1,$dia1,$anyo1));
$dias_anyo2 = date("z", mktime(0,0,0,$mes2,$dia2,$anyo2));
$num_dias = $dias_anyo1 + $dias_anyo2;
}
else
$num_dias = date("z", mktime(0,0,0,$mes2,$dia2,$anyo2)) - date("z", mktime(0,0,0,$mes1,$dia1,$anyo1));

return $num_dias;
}

?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>calcular</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<? echo $num_dias; ?>
</body>
</html>

//................................

Por mas de darle vueltas no encuentro donde esta el error y cuando se procesa el script no me da ningun resultado, ojala y me puedan ayudar.
gracias.

Última edición por midpunto; 28/07/2004 a las 16:48
  #2 (permalink)  
Antiguo 29/07/2004, 03:58
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 22 años, 5 meses
Puntos: 16
Hola,

Esto, en el segundo fichero, ¿donde llamas a la funcion? Por lo que veo en ningun sitio. En lugar de:
Código PHP:
<? echo $num_dias?>
tendrias que poner:
Código PHP:
<? echo dias_entre_fechas($fecha$fecha2); ?>
Saludos.

PD: No he mirado si la logica de la funcion esa bien.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #3 (permalink)  
Antiguo 29/07/2004, 04:28
 
Fecha de Ingreso: julio-2004
Ubicación: Puerto Vallarta, Jalisco, Mexico
Mensajes: 186
Antigüedad: 20 años, 4 meses
Puntos: 0
tal vez lo resuelvas con lo que te dijo Josemi, pero te dejo otra funcion por si la quieres usar:

Código PHP:
function diff_days($start_date$end_date)
{
        return 
floor(abs(strtotime($start_date) - strtotime($end_date))/86400);

solo la llamas asi
$dias = diff_days($fecha1, $fecha2);

$dias tendra la diferencia de dias entre las dos fechas.
NOTA: mis fechas estan en el formato 2004-07-31 (AAAA-MM-DD) no estoy muy seguro si tengas que cambiar tus fechas a este formato, cosa que no seria muy dificil

$fecha1 = date("Y-m-d", $fechadelformulario1);

suerte
__________________
Shanti Castillo G.
  #4 (permalink)  
Antiguo 29/07/2004, 05:12
Avatar de midpunto  
Fecha de Ingreso: enero-2004
Ubicación: España Palma de mallorca
Mensajes: 118
Antigüedad: 20 años, 10 meses
Puntos: 0
Hola gracias!!.... el error que cometia como dice josemi era que no llamaba a la funcion, ahora funciona perfectamente.
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 12:18.