SoloCodigo

Programación Web y Scripting => PHP => Mensaje iniciado por: steel en Martes 14 de Noviembre de 2006, 11:42

Título: Comparar Fechas En Php
Publicado por: steel en Martes 14 de Noviembre de 2006, 11:42
Hola, tengo una serie de documentos con la fecha en la que se crearon de la siguiente manera: "Sunday 24-09-2006 21:17", y necesito compararla con otra fecha que yo le paso para ver si el documento es anterior a esa fecha o posterior.

He buscado en google y he encontrado cosas pero no me funcionan asique prefiero que me aconsejeis vosotros. El formato en el que le pase la fecha yo no me importa cual sea.

Gracias por vuestro tiempo.
Título: Re: Comparar Fechas En Php
Publicado por: ibito en Martes 14 de Noviembre de 2006, 16:38
¿No puedes sustraer la fecha de esa cadena? por ejemplo con un explode(" ", $fecha);
Título: Re: Comparar Fechas En Php
Publicado por: steel en Martes 14 de Noviembre de 2006, 17:03
hombre, si pero eso no me vale para comparar las fechas no?
Título: Re: Comparar Fechas En Php
Publicado por: ibito en Martes 14 de Noviembre de 2006, 17:17
¿Cómo buscaste en Google? Yo busqué (sin comillas): "php comparar fechas"
http://dns.bdat.net/trucos/faqphp-v1/x338.html (http://dns.bdat.net/trucos/faqphp-v1/x338.html)
Título: Re: Comparar Fechas En Php
Publicado por: steel en Martes 14 de Noviembre de 2006, 17:26
Bueno yo busque en ingles, pero de todas maneras eso tampoco me vale porque para que funcionara las fechas deberian ser asi:

$f1="30/01/1993";
           
$f2="30-01-1992";

y las mias incluyen dia de la semana y hora.

A alguien se le ocurre otra cosa?
Título: Re: Comparar Fechas En Php
Publicado por: orkristmex en Domingo 19 de Noviembre de 2006, 07:26
usa un explode para sacar primero la fecha, y lueog la hora, luego usa otro explode en cada uno para separar la informaciòn en la fecha y comparas uno a uno con la otra fecha, lo mismo con la hora es facil
Título: Re: Comparar Fechas En Php
Publicado por: MaoBike en Viernes 31 de Agosto de 2007, 22:56
Esta funcion te compara 2 fechas y retorna la diferencia en dias.
Espero te sirva yo la uso y sirve perfectamente.

Código: Text
  1.  
  2. ### - Esta funcion compara 2 fechas y retorna la diferencia (dd-mm-yyyy) - ###
  3.  function compara_fechas($fecha1,$fecha2) {
  4.   if(preg_match("/[0-9]{1,2}\/[0-9]{1,2}\/([0-9][0-9]){1,2}/",$fecha1))
  5.      list($dia1,$mes1,$año1)=split("/",$fecha1);
  6.   if(preg_match("/[0-9]{1,2}-[0-9]{1,2}-([0-9][0-9]){1,2}/",$fecha1))
  7.      list($dia1,$mes1,$año1)=split("-",$fecha1);
  8.   if(preg_match("/[0-9]{1,2}\/[0-9]{1,2}\/([0-9][0-9]){1,2}/",$fecha2))
  9.      list($dia2,$mes2,$año2)=split("/",$fecha2);
  10.   if(preg_match("/[0-9]{1,2}-[0-9]{1,2}-([0-9][0-9]){1,2}/",$fecha2))
  11.      list($dia2,$mes2,$año2)=split("-",$fecha2);
  12.   $dif = mktime(0,0,0,$mes1,$dia1,$año1) - mktime(0,0,0,$mes2,$dia2,$año2);
  13.   $ndias=floor($dif/(24*60*60));
  14.   return($ndias);
  15.  }
  16.  
  17.  
Título: Re: Comparar Fechas En Php
Publicado por: neorent en Lunes 3 de Septiembre de 2007, 21:22
Código: Text
  1.  
  2. ////////////////////////////////////////////////////
  3. //Convierte fecha de mysql a normal
  4. ////////////////////////////////////////////////////
  5. function cambiaf_a_normal($fecha){
  6.     ereg( "([0-9]{2,4})-([0-9]{1,2})-([0-9]{1,2})", $fecha, $mifecha);
  7.     $lafecha=$mifecha[3]."/".$mifecha[2]."/".$mifecha[1];
  8.     return $lafecha;
  9. }
  10.  
  11. ////////////////////////////////////////////////////
  12. //Convierte fecha de normal a mysql
  13. ////////////////////////////////////////////////////
  14.  
  15. function cambiaf_a_mysql($fecha){
  16.     ereg( "([0-9]{1,2})/([0-9]{1,2})/([0-9]{2,4})", $fecha, $mifecha);
  17.     $lafecha=$mifecha[3]."-".$mifecha[2]."-".$mifecha[1];
  18.     return $lafecha;
  19. }
  20.  

cambia la fecha
Título: Re: Comparar Fechas En Php
Publicado por: Altareum en Martes 4 de Septiembre de 2007, 16:19
Hm... creo que se están olvidando de algo importante, steel necesita comparar fechas, no convertir la fecha.

Para trabajar con fechas, el método más aconsejable es usar Timestamp (http://en.wikipedia.org/wiki/Timestamp), y es el método más efectivo para sumar, comparar y convertir.

Código: Text
  1.  
  2. $fecha = strtotime ("Sunday 24-09-2006 21:17");
  3.  
  4.  


Una vez convertida, podemos obtener la fecha con formato, podemos sumarle días, meses, años, segundos, etc... Podemos compararla con otra fecha del mismo formato.

Por ejemplo, para saber si la fecha es anterior al día actual:
Código: Text
  1.  
  2. $fecha = strtotime ("Sunday 24-09-2006 21:17");
  3. $hoy = mktime(0,0,0,date("m"), date("d"); date("Y"));
  4.  
  5. if($fecha<$hoy){
  6.    echo 'Anterior';
  7. }else{
  8.    echo 'Posterior';
  9. }
  10.  
  11.  

Altareum.