Ver Mensaje Individual
  #2 (permalink)  
Antiguo 16/07/2003, 08:00
leonardop
 
Fecha de Ingreso: julio-2003
Mensajes: 165
Antigüedad: 20 años, 9 meses
Puntos: 1
Hola,

En PHP hay un amplio conjunto de funciones orientadas a la manipulación de valores de fecha y hora. Esto quiere decir que muy posiblemente puedes dar con una gran cantidad de formas de resolver tu problema.

Inicialmente, a mí se me ocurre que podrías usar algo de este tipo:

Código:
<?php

// Asumimos que los valores de fecha inicialmente estan almacenados en
// variables simples, en forma de valores enteros.

$fecha_llegada_dia  = 18;    // Todos estos valores son solo de ejemplo.
$fecha_llegada_mes  = 6;
$fecha_llegada_anyo = 2003;

$fecha_salida_dia  = 3;      // Estos tambien...
$fecha_salida_mes  = 7;
$fecha_salida_anyo = 2003;


// De este modo, una forma de encontrar la diferencia (en dias) entre
// ambas fechas puede ser: convertir ambas fechas a un formato comun y
// mas simple; el "UNIX timestamp" parece una buena opcion. De esta
// forma, las fechas son convertidas a un valor entero largo unico, y
// restar los dos valores resulta trivial. Para mostrar el resultado,
// puede darse un formato mas comodo de vuelta al resultado.

// Los ceros que son pasados como argumentos a la funcion mktime
// corresponden a las horas, minutos y segundos de la fecha que desea
// convertirse a un "UNIX timestamp". Pueden ser modificados si por
// ejemplo se quisiera que los calculos dependieran de cierta forma de
// las horas de llegada y salida.

$fecha_llegada_unix = mktime (0, 0, 0,
                              $fecha_llegada_mes, $fecha_llegada_dia,
                              $fecha_llegada_anyo);

$fecha_salida_unix = mktime (0, 0, 0,
                             $fecha_salida_mes, $fecha_salida_dia,
                             $fecha_salida_anyo);

$diferencia = $fecha_salida_unix - $fecha_llegada_unix;


// Volvamos a darle un formato mas "humano" al resultado y contemosle
// al usuario el resultado. Dado que el formato "UNIX timestamp" es
// basicamente una cantidad en segundos, puede dividirse el valor
// $diferencia entre 86400, que es la cantidad aproximada de segundos
// que hay en un dia, y se obtiene la cantidad de dias que hay entre
// las dos fechas originales.

$dias_diferencia = $diferencia / 86400;

print "La diferencia en dias entre las dos fechas es: $dias_diferencia";


// Nota final: la diferencia es un valor resultado de una resta
// simple. Si se necesitan hacer manipulaciones mas cuidadosas en el
// sentido en que posiblemente haya que tener en cuenta ciertas horas,
// o haya que hacer el calculo contando tanto los dias de llegada como
// de salida inclusive, puede simplemente aplicarse una correccion
// simple al resultado. Es cuestion de jugar con el codigo y encontrar
// la forma mas util de hacer uso de el.

?>

Espero que te ayude con tu problema, si lo he interpretado correctamente. Saludos.