Foros del Web » Programando para Internet » PHP »

Temporadas y seleccion fecha

Estas en el tema de Temporadas y seleccion fecha en el foro de PHP en Foros del Web. Hola amigos , Tengo un problema, es que un cliente me ha pedido que varíe un precio según temporadas, es decir, el usuario escoje una ...
  #1 (permalink)  
Antiguo 09/12/2014, 10:57
 
Fecha de Ingreso: abril-2010
Mensajes: 267
Antigüedad: 14 años, 7 meses
Puntos: 1
Temporadas y seleccion fecha

Hola amigos ,

Tengo un problema, es que un cliente me ha pedido que varíe un precio según temporadas, es decir, el usuario escoje una fecha de entrega de un coche, y otra de devolución, entonces debo saber si esas dos fechas están en un rango de fechas (Temporada) u otra.

ATENCIÓN: Es muy importante que el año lo ignore, ya que puede elegir hasta un año más adelante o puede variar.

He hecho lo siguiente sin que me de resultado:

Código:
<?php

	function check_in_range($start_date, $end_date, $evaluame) {
	
		$start_ts = strtotime($start_date);
		
		$end_ts = strtotime($end_date);
		
		$user_ts = strtotime($evaluame);
		
		return (($user_ts >= $start_ts) && ($user_ts <= $end_ts));
		
	}

	$date = $_GET['date'];
	
	$date_2 = $_GET['date_2'];
	
	if(check_in_range('2014-01-06', '2014-03-15', $date) && check_in_range('2014-01-06', '2014-03-15', $date_2) || check_in_range('2014-11-01', '2014-12-15', $date) && check_in_range('2014-11-01', '2014-12-15', $date_2)) {
	
		echo 'Temporada baja';
	
	} else if(check_in_range('2014-12-16', '2014-01-05', $date) && check_in_range('2014-12-16', '2014-01-05', $date_2) || check_in_range('2014-03-16', '2014-06-30', $date) && check_in_range('2014-03-16', '2014-06-30', $date_2)) {
	
		echo 'Temporada media';
	
	} else if(check_in_range('2014-07-01', '2014-10-31', $date) && check_in_range('2014-07-01', '2014-10-31', $date_2)) {
	
		echo 'Temporada alta';
	
	} else {
	
		echo 'Entre temporada';
	
	}
	
?>
Muchísimas gracias :)

Última edición por alejandromaringomez; 09/12/2014 a las 10:59 Razón: He publicado lo de ATENCIÓN
  #2 (permalink)  
Antiguo 09/12/2014, 11:37
 
Fecha de Ingreso: abril-2010
Mensajes: 267
Antigüedad: 14 años, 7 meses
Puntos: 1
Respuesta: Temporadas y seleccion fecha

Pido disculpas por este mensaje, es solo para decir que he encontrado una pequeña solucion a lo que quiero, pero me queda una cosa, y es que no me valore el año, que vea que esa fecha está en esa temporada en formato MM-DD, yo he conseguido esto:

Cita:
<?php

function valida_fecha($inicio, $fin, $date_entrega, $date_devolucion) {

if(strtotime($date_entrega) >= strtotime($inicio) && strtotime($date_entrega) <= strtotime($fin)) {

if(strtotime($date_devolucion) >= strtotime($inicio) && strtotime($date_devolucion) <= strtotime($fin)) {

return true;

} else {

return false;

}

} else {

return false;

}

}

$date = $_GET['date'];

$date_2 = $_GET['date_2'];

if(valida_fecha('2014-01-06', '2014-03-15', $date, $date_2) || valida_fecha('2014-11-01', '2014-12-15', $date, $date_2)) {

echo 'Temporada baja';

} else if(valida_fecha('2014-12-16', '2014-01-05', $date, $date_2) || valida_fecha('2014-03-16', '2014-06-30', $date, $date_2)) {

echo 'Temporada media';

} else if(valida_fecha('2014-07-01', '2014-10-31', $date, $date_2)) {

echo 'Temporada alta';

} else {

echo 'Entre temporada';

}

?>
Y quisiera algo similar a esto:

Cita:
<?php

function valida_fecha($inicio, $fin, $date_entrega, $date_devolucion) {

if(strtotime($date_entrega) >= strtotime($inicio) && strtotime($date_entrega) <= strtotime($fin)) {

if(strtotime($date_devolucion) >= strtotime($inicio) && strtotime($date_devolucion) <= strtotime($fin)) {

return true;

} else {

return false;

}

} else {

return false;

}

}

$date = $_GET['date'];

$date_2 = $_GET['date_2'];

if(valida_fecha('01-06', '03-15', $date, $date_2) || valida_fecha('11-01', '12-15', $date, $date_2)) {

echo 'Temporada baja';

} else if(valida_fecha('12-16', '01-05', $date, $date_2) || valida_fecha('03-16', '06-30', $date, $date_2)) {

echo 'Temporada media';

} else if(valida_fecha('07-01', '10-31', $date, $date_2)) {

echo 'Temporada alta';

} else {

echo 'Entre temporada';

}

?>
Gracias :)

Etiquetas: fecha, seleccion
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 16:49.