Ver Mensaje Individual
  #5 (permalink)  
Antiguo 16/04/2008, 03:21
centrion_75
 
Fecha de Ingreso: marzo-2008
Mensajes: 119
Antigüedad: 16 años, 1 mes
Puntos: 0
Re: Comparar fechas en PHP

Hola de nuevo,

ya he encontrado una solución. He hecho un fichero que contiene dos ejemplos,que luego mostraré por si os sirve. Esta brevemente explicado.

Debido a que yo las fechas las pongo con el siguiente formato: dd/mm/yyyy, he creado una serie de funciones para transformar el formato, en el siguiente fichero (fechas.php):

Código PHP:
<?php

//Combierte fecha de MySql(Año-Mes-Dia) a normal(Dia-Mes-Año)
function cambiaf_a_normal($fecha)

    
ereg"([0-9]{2,4})-([0-9]{1,2})-([0-9]{1,2})"$fecha$mifecha); 
    
$lafecha=$mifecha[3]."/".$mifecha[2]."/".$mifecha[1]; 
    return 
$lafecha


//Convierte fecha de normal(Dia-Mes-Año) a MySql(Año-Mes-Dia) 

function cambiaf_a_mysql($fecha)

    
ereg"([0-9]{1,2})/([0-9]{1,2})/([0-9]{2,4})"$fecha$mifecha); 
    
$lafecha=$mifecha[3]."-".$mifecha[2]."-".$mifecha[1]; 
    return 
$lafecha
}

//Convierte fecha con formato dd/mm/yyyy en dd-mm-yyyy, para poder utilizar la función strtotime y comparar fechas
function cambiaf_a_otrofor($fecha)
{
      
ereg"([0-9]{1,2})/([0-9]{1,2})/([0-9]{2,4})"$fecha$mifecha); 
    
$lafecha=$mifecha[1]."-".$mifecha[2]."-".$mifecha[3]; 
    return 
$lafecha
}  
?>
Aquí los dos ejemplos en un fichero:

Código PHP:
<?php
require("Negocio/fechas.php");

/*Fecha actual con la función getdate() */
echo"Comparar dos fechas 1</br>";
$hoy=getdate();
echo
"Fecha de hoy: </br>";
echo
"Dia: ".$hoy["mday"]."</br>";
echo
"Mes: ".$hoy["mon"]."</br>";
echo
"Anio: ".$hoy["year"]."</br>";
echo
"</br>";
//Con este formato no hace falta cambio
$fecha=getdate(strtotime("17-04-2008"));
echo
"Fecha: </br>";
echo
"Dia: ".$fecha["mday"]."</br>";
echo
"Mes: ".$fecha["mon"]."</br>";
echo
"Anio: ".$fecha["year"]."</br>";
echo
"</br>";
//Transformarlas con mktime()
$hoy2=mktime(0,0,0,$hoy["mon"],$hoy["mday"],$hoy["year"]);
$fecha2=mktime(0,0,0,$fecha["mday"],$fecha["mon"],$fecha["year"]);
if(
$hoy2<=$fecha2)
{
    echo
"Hoy: ".$hoy["mday"]." ".$hoy["mon"]." ".$hoy["year"]." es menor o igual que"
    
.$fecha["mday"]." ".$fecha["mon"]." ".$fecha["year"]."</br>";
}
else
{
    echo
"Hoy: ".$hoy["mday"]." ".$hoy["mon"]." ".$hoy["year"]." es mayor que"
    
.$fecha["mday"]." ".$fecha["mon"]." ".$fecha["year"]."</br>";
}
echo
"</br>";
echo
"Comparar dos fechas 2</br>";
/*Fecha con formato dd/mm/yyyy la paso a formato dd-mm-yyyy con la función cambiaf_a_otrofor(), con strtotime la transformo en tiestamp
con getdate() obtengo el dia,mes y año, para luego utilizar la función mktime() y poder comparar fechas*/
$fecha22=getdate(strtotime(cambiaf_a_otrofor("21/07/2007")));
echo
"Fecha de hoy: </br>";
echo
"Dia: ".$fecha22["mday"]."</br>";
echo
"Mes: ".$fecha22["mon"]."</br>";
echo
"Anio: ".$fecha22["year"]."</br>";
echo
"</br>";
//Con este formato no hace falta cambio
$fecha33=getdate(strtotime(cambiaf_a_otrofor("01/02/2008")));
echo
"Fecha: </br>";
echo
"Dia: ".$fecha33["mday"]."</br>";
echo
"Mes: ".$fecha33["mon"]."</br>";
echo
"Anio: ".$fecha33["year"]."</br>";
echo
"</br>";
//Transformarlas con mktime()
$fechaRes22=mktime(0,0,0,$fecha22["mon"],$fecha22["mday"],$fecha22["year"]);
$fechaRes33=mktime(0,0,0,$fecha33["mday"],$fecha33["mon"],$fecha33["year"]);
if(
$fechaRes22<=$fechaRes33)
{
    echo
"Fecha: ".$fecha22["mday"]." ".$fecha22["mon"]." ".$fecha22["year"]." es menor o igual que "
    
.$fecha33["mday"]." ".$fecha33["mon"]." ".$fecha33["year"]."</br>";
}
else
{
    echo
"Fecha: ".$fecha22["mday"]." ".$fecha22["mon"]." ".$fecha22["year"]." es mayor que "
    
.$fecha33["mday"]." ".$fecha33["mon"]." ".$fecha33["year"]."</br>";
}

?>
Espero que os sirva, y si encontrais algún fallo, por favor decirmelo.