Búsqueda personalizada

12 jul 2013

Pin It

Widgets

Comparar dos fechas en php

20:50

Hola, hoy vamos a ver como comparar dos fechas en php.

El otro día me encontré con este problema programando un panel de control que te da el aviso de cuando es la siguiente fecha de renovación de un contrato, que se ha de renovar cada año.

El problema era el siguiente:

Si la fecha inicio del contrato es: 13/07/2012 y hoy es 12/07/2013, sin problemas me decía que la siguiente renovación era el 13/07/2013. El problema venía si hoy era 14/07/2013... la siguiente fecha de renovación seguía diciendo que era el 13/07/2013, cuando en realidad ya era el 13/07/2014.

Es que el asunto no es tan fácil como:

<?php
$fecha1="laquesea";
$fecha2="laquesea2";

if($fecha<=$fecha2){
       echo "esto está mal!!!";
}
?>

Así que rebusqué por ahí y os puedo ofrecer algunas soluciones.


<? 
//defino fecha 1 
$ano1 = 2006; 
$mes1 = 10; 
$dia1 = 2; 

//defino fecha 2 
$ano2 = 2006; 
$mes2 = 10; 
$dia2 = 27; 

//calculo timestam de las dos fechas 
$timestamp1 = mktime(0,0,0,$mes1,$dia1,$ano1); 
$timestamp2 = mktime(4,12,0,$mes2,$dia2,$ano2); 

//resto a una fecha la otra 
$segundos_diferencia = $timestamp1 - $timestamp2; 
//echo $segundos_diferencia; 

//convierto segundos en días 
$dias_diferencia = $segundos_diferencia / (60 * 60 * 24); 

//obtengo el valor absoulto de los días (quito el posible signo negativo) 
$dias_diferencia = abs($dias_diferencia); 

//quito los decimales a los días de diferencia 
$dias_diferencia = floor($dias_diferencia); 

echo $dias_diferencia; 
?>

Esta solución es de desarrolloweb.com.

Ahora veamos la siguiente, en la que podemos ver se usa en una función.

function compararFechas($primera, $segunda)
 {
  $valoresPrimera = explode ("/", $primera);   
  $valoresSegunda = explode ("/", $segunda); 

  $diaPrimera    = $valoresPrimera[0];  
  $mesPrimera  = $valoresPrimera[1];  
  $anyoPrimera   = $valoresPrimera[2]; 

  $diaSegunda   = $valoresSegunda[0];  
  $mesSegunda = $valoresSegunda[1];  
  $anyoSegunda  = $valoresSegunda[2];

  $diasPrimeraJuliano = gregoriantojd($mesPrimera, $diaPrimera, $anyoPrimera);  
  $diasSegundaJuliano = gregoriantojd($mesSegunda, $diaSegunda, $anyoSegunda);     

  if(!checkdate($mesPrimera, $diaPrimera, $anyoPrimera)){
    // "La fecha ".$primera." no es v&aacute;lida";
    return 0;
  }elseif(!checkdate($mesSegunda, $diaSegunda, $anyoSegunda)){
    // "La fecha ".$segunda." no es v&aacute;lida";
    return 0;
  }else{
    return  $diasPrimeraJuliano - $diasSegundaJuliano;
  } 

}

$primera = "29/02/2000";
$segunda = "31/01/2000";

echo compararFechas ($primera,$segunda);

Este código es copiado de webtutoriales.com

______

Con este segundo ejemplo es el que yo utilicé y adapté a mi problema.

Espero que os sirva. Un saludo.



Escrito por

Si tienes alguna otra duda, o quieres comentar algo sobre el tema, te animo a que dejes un comentario. También puedes visitar nuestro foro. ¡Un saludo!

0 comentarios:

Publicar un comentario

 

© 2014 Aplicaciones ...---Chey---.... All rights resevered. Designed by Chey Developer

Back To Top
Recibe las actualizaciones directo a tu correo