Foros del Web » Programando para Internet » PHP »

Comparar solo MM-DD

Estas en el tema de Comparar solo MM-DD en el foro de PHP en Foros del Web. Hola amigos :) , Verán, estoy montando un sistema con php en el que pongo dos fechas, por ejemplo 01-10 y 02-10, y lo que ...
  #1 (permalink)  
Antiguo 09/12/2014, 14:07
 
Fecha de Ingreso: abril-2010
Mensajes: 267
Antigüedad: 14 años
Puntos: 1
Comparar solo MM-DD

Hola amigos :) ,

Verán, estoy montando un sistema con php en el que pongo dos fechas, por ejemplo 01-10 y 02-10, y lo que quiero es comprobar que 01-15 y 02-05 están dentro de ese rango de fechas, como habréis visto no incluyo el año, ya que me da ciertos problemas para lo que necesito, ¿Hay alguna manera de comprobarlo de esta manera? Yo he intentado de esta manera:

Código:
<?php

	function comprobar_temporada($inicio, $fin, $date_entrega, $date_devolucion) {
	
		list($mes_inicio, $dia_inicio)  = explode('-', $inicio);
		
		list($mes_fin, $dia_fin)  = explode('-', $fin);
		
		list($dia_entrega, $mes_entrega, $ano_entrega)  = explode('/', $date_entrega);
		
		list($dia_devolucion, $mes_devolucion, $ano_devolucion)  = explode('/', $date_devolucion);
	
		if($mes_inicio <= $mes_entrega && $dia_inicio <= $dia_entrega && $mes_fin >= $mes_devolucion && $dia_fin >= $dia_devolucion) {
			
			return true;
		
		} else {
		
			return false;
		
		}
	
	}
	
	if(comprobar_temporada('01-01', '02-01', $_GET['date'], $_GET['date_2'])) {
	
		echo 'en tiempo';
	
	}

?>
Muchas gracias a todos de antemano :)
  #2 (permalink)  
Antiguo 09/12/2014, 14:18
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Comparar solo MM-DD

¿La forma en que intentas no sirve?

Vamos, que no explicas "el problema", sólo muestras código.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 09/12/2014, 14:20
Avatar de Djoaq  
Fecha de Ingreso: septiembre-2012
Ubicación: Barcelona
Mensajes: 271
Antigüedad: 11 años, 6 meses
Puntos: 38
Respuesta: Comparar solo MM-DD

Lo del año de devolución no debería influir para nada de forma negativa! ...

Lo que debes hacer es convertir ese tipo de dato que te llega a fecha :

Código PHP:
$fecha_inicio date_create_from_format('d-m-Y''15-02-2009');
$fecha_fin =  date_create_from_format('d-m-Y''15-02-2014');

//aqui ya puedes evaluar bien ...

if($fecha_inicio >=$fecha_fin){
echo 
fecha de inicio es mayor que la fecha de fin... etc etc


http://php.net/manual/es/datetime.createfromformat.php


Un saludo
  #4 (permalink)  
Antiguo 09/12/2014, 14:34
 
Fecha de Ingreso: abril-2010
Mensajes: 267
Antigüedad: 14 años
Puntos: 1
Respuesta: Comparar solo MM-DD

¡Hola pateketrueke! ,
La cosa es que mezclo cosas, es decir...

Las fechas se cojen mediante datepicker, que deja de margen de 1 año, claro, al dejar un año hay una parte de código que varía...

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';

}

?>
Imagína que escojes fecha del 17 de Diciembre a el 1 de Enero de 2015, si os fijais hay coladeros, con ello me refiero a que debería dar como temporada baja, media o alta y lo da como que es una fecha entre temporadas...

Por ejemplo un coladero es que si yo pongo:

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

echo 'Temporada media';

}
Si os fijais al comienzo he puesto hasta el 2015, con eso ya vale para que entre esas fechas me de todo como temporada media.

Lo que estaba pensando es quitar los años y poner solo meses y dias.

Un saludo y gracias también a Djoaq:)

Etiquetas: fecha
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 14:48.