> Faqs > Duda con fechas en PHP

Duda con fechas en PHP

Hola a todos.

Tengo un problema, estoy haciendo un formulario donde el usuario puede tener la opción de hacer la busqueda entre dos fechas.

Los resultados que se muestren deben estar comprendidos entre esas fechas.

he reducido lo fundamental:

<span class="codigo"> <?php

$fecha1=31/12/1999;
$fecha2=05/10/2005;

$fecha=20/01/2003;

$fecha1 = addslashes($fecha1);
$fecha2 = addslashes ($fecha2);
$fecha = addslashes ($fecha);

if ($fecha1<$fecha)
{
if ($fecha2<$fecha)
echo "fecha2 es menor que fecha";
else
echo "fecha2 es mayor que fecha";
}
else
echo "fecha1 es mayor que fecha";

?>

</span> He cambiado la forma de poner la fecha, etc, y por ejemplo en este caso me dice que fecha2 es menor que fecha.

Donde esta el error??
Muchas gracias

Respuestas

Hola, yo de nuevo por acá a los tiempos, he estado demasiado ocuapdo estos días. Voy a tratar de responder a tu duda de acuerdo a lo que posteaste. Primero hay un error en la declaración de tus variables, recuerda que en php y en algunos otros lenguajes por no decir en la mayoría el signo slash / es un signo de divición por lo que al declarar tus variables sin comillas no estás declarando una cadena de fecha sino más bien una divición, por ejemplo: $fecha1=31/12/1999 = 0,0012923128230782057695514423878606 $fecha2=05/10/2005 = 2,4937655860349127182044887780549e-4 $fecha=20/01/2003 = 9,9850224663005491762356465302047e-4 De ahí empieza el problema de tus resultados inesperados. Por lo que tienes que declarar las fechas cómo si estuvieras declarando string de la siguiente manera: $fecha1="31/12/1999"; $fecha2="05/10/2005"; $fecha="20/01/2003"; Te sugiero que estas comparaciones de fechas lo hagas con enteros, es decir pasando las fechas a enteros para ser más precisos, lo puedes hacer como sigue: $fecha1Int = mktime(0,0,0,substr($fecha1,3,2), substr($fecha1,0,2), substr($fecha1,6,4)); $fecha2Int = mktime(0,0,0,substr($fecha2,3,2), substr($fecha2,0,2), substr($fecha2,6,4)); $fechaInt = mktime(0,0,0,substr($fecha,3,2), substr($fecha,0,2), substr($fecha,6,4)); Bueno es una de las formas y luego tu pregunta con los datos enteros: if ($fecha1Int

Horacio Santa Cruz