Cálculo de días
4 seguidores
Buenas, estoy en una web para un rent a car y el cliente me ha pedido (con toda la razón) que el usuario pueda seleccionar una fecha de recogida y otra de devolución y que la página calcule la diferencia de tiempo en días para calcular el precio. He estado buscando en varios sitios de script pero no encuentro nada. Lo más cerca que he estado ha sido al obtener el número de años, meses y días pero no me sirve. Necesito un número de días total (ej: 45 días, y no 1 mes y 15 días).
Alguien ha hecho alguna vez algo parecido?
Gracias!
black
javascript, php asp...?
musikboy
Pues estoy trabajando con php, pero si se puede hacer con javascript también me vale.
musikboy
:|
odrakir
No sé dónde se pueden buscar ese tipo de scripts, pero hacerlo tu mismo no es tan complicado.
Simplemente coge una fecha de referencia anterior a cualquiera que vaya a aparecer en la aplicación, por ejemplo 1 de enero de 2000. Calcula los días de cada fecha dada con la de referencia y restalos.
Para que funciono de forma perpetua tienes que saber que años son bisiestos (los multiplos de 4, no?) y cuantos días tiene cada mes y poco más.
Odrakir.
mik
Del manual de php http://es.php.net/manual/es/function.mktime.php:
mktime
(PHP 3, PHP 4 , PHP 5)
mktime -- obtiene el timestamp UNIX de una fecha
Descripción
int mktime ( int hour, int minute, int second, int month, int day, int year [, int is_dst])
...
Devuelve el valor timestamp Unix correspondiente a los argumentos dados. El timestamp es un entero de tipo long que contiene el número de segundos entre el valor Unix Epoch (1 de enero de 1970) y la hora especificada.
Como la fecha te la da desde una referencia absoluta y en segundos puedes hacer algo como esto partiendo de una fecha de recogida=$dia1/$mes1/$año1 y fecha de devolución=$dia2/$mes2/$año2:
<code>$stamp1=mktime(12,0,0,$mes1,$dia1,$año1);//para la hora cogemos las 12 mismo
$stamp2=mktime(12,0,0,$mes2,$dia2,$año2);
$difSecs=$stamp2-$stamp1;//diferencia en segundos
$difDays=ceil($difSecs/(60*60*24));//digo yo que una fracción de dia se toma como un dia completo....cabrones!
$precio=$difDays*$precioPorDia;</code>
Digo yo que funcionará.