Foros del Web » Programando para Internet » PHP »

Fechas en PHP 2da parte

Estas en el tema de Fechas en PHP 2da parte en el foro de PHP en Foros del Web. Sigo teniendo problemas con el tema de las fechas en mi sistema de reservas para un hotel.... El problema en cuestion es el siguiente... Tengo ...
  #1 (permalink)  
Antiguo 15/07/2003, 22:58
Avatar de pabloazorin  
Fecha de Ingreso: junio-2003
Ubicación: Pilar, Buenos Aires.
Mensajes: 41
Antigüedad: 14 años, 5 meses
Puntos: 1
Pregunta Fechas en PHP 2da parte

Sigo teniendo problemas con el tema de las fechas en mi sistema de reservas para un hotel....

El problema en cuestion es el siguiente...
Tengo tres combo box dondel el usuario elige fecha de salida (mes, dia y año) y otros tres combos donde elige la fecha de llegada (mes, dia y año).
Necesito de alguna forma, calcular la diferencia entre el dia de salida y de llegada; y decirle al usuario la cantidad de dias que estara hospedado en el hotel.
Lo que no puedo resolver, por ejemplo, es cuando un usuario elige dia 18 del mes 6 del año 2003 hasta el dia 3 del mes 7 del año 2003.....como hago para calcular automaticamente los dias?
Alguien podria darme un poco de ayuda, o si alguna vez anteriormente realizo algo de esto, por favor, avisarme....

Desde ya, muchisimas gracias.
Atte
PABLO S. AZORIN
__________________
Pablo S. Azorin
[email protected]
  #2 (permalink)  
Antiguo 16/07/2003, 09:00
 
Fecha de Ingreso: julio-2003
Mensajes: 165
Antigüedad: 14 años, 5 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.
  #3 (permalink)  
Antiguo 16/07/2003, 09:21
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 15 años, 10 meses
Puntos: 5
Es correcto el codigo que te pasa leonardop, solo que creo que en tu caso deberás restarle 1 al resultado, ya que tu calculas las NOCHES de hospedaje, no?
__________________
Manoloweb
  #4 (permalink)  
Antiguo 16/07/2003, 15:26
Avatar de pabloazorin  
Fecha de Ingreso: junio-2003
Ubicación: Pilar, Buenos Aires.
Mensajes: 41
Antigüedad: 14 años, 5 meses
Puntos: 1
Ya casi terminando con el trabajo encargado....agradezco a todos los que colaboraron con el mismo....tengo un ultimo tema que definir.....
Se trata de lo siguiente:
Cuando el usuario elije del combo box el dia mes y año de salida y del otro combo el dia mes y año de vuelta, automaticamente confirma si hay o no reservas.
Dentro del backoffice del website tengo una seccion donde agrego en la base de datos las fechas en las cuales no poseo disponibilidad.
Por ejemplo....si el cliente desea alojarse desde el 1º de Febrero del 2003 hasta el 15 de febrero del mismo, y yo en mi base de datos tengo cargado que los dias 10, 11 y 12 de febrero no hay disponibilidad, necesito que automaticamente muestro un mensaje que diga algo asi : "No hay disponibilidad para los dias: 10, 11 y 12 de febrero".....algo asi....
Se entiende mas o menos la idea?
Si alguien le interesa y me puede dar una mano, como lo hicieron con anterioridad, estare nuevamente agradecido!
Atte
PABLO S. AZORIN
__________________
Pablo S. Azorin
[email protected]
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 23:55.