Skip to content

Instantly share code, notes, and snippets.

@fmagrosoto
Created November 29, 2012 19:56
Show Gist options
  • Save fmagrosoto/4171443 to your computer and use it in GitHub Desktop.
Save fmagrosoto/4171443 to your computer and use it in GitHub Desktop.
Comparar fechas en PHP
<?php
#############################################################################
## Función para comparar fechas extraídas
## de un sql query.
## Lo que hace la función es convertir
## las fechas gregorianas en fechas julianas
## y calcular los días de diferencia
##
## Créditos: http://www.webtutoriales.com/articulos/comparar-fechas-en-php
## Modificado por: Fernando Magrosoto (yo)
## Historia: noviembre 2012
#############################################################################
function compararFechas($primera, $segunda)
{
$valoresPrimera = explode ("-", $primera);
$valoresSegunda = explode ("-", $segunda);
$diaPrimera = $valoresPrimera[2];
$mesPrimera = $valoresPrimera[1];
$anyoPrimera = $valoresPrimera[0];
$diaSegunda = $valoresSegunda[2];
$mesSegunda = $valoresSegunda[1];
$anyoSegunda = $valoresSegunda[0];
$diasPrimeraJuliano = gregoriantojd($mesPrimera, $diaPrimera, $anyoPrimera);
$diasSegundaJuliano = gregoriantojd($mesSegunda, $diaSegunda, $anyoSegunda);
if(!checkdate($mesPrimera, $diaPrimera, $anyoPrimera)){
echo "La fecha ".$primera." no es v&aacute;lida";
return 0;
}elseif(!checkdate($mesSegunda, $diaSegunda, $anyoSegunda)){
echo "La fecha ".$segunda." no es v&aacute;lida";
return 0;
}else{
return $diasPrimeraJuliano - $diasSegundaJuliano;
}
}
$primera = "2012-11-29";
$segunda = "2012-11-30";
echo compararFechas ($primera,$segunda);
@fmagrosoto
Copy link
Author

Función PHP para sacar los días de diferencia entre una fecha y otra.
La función pide como parámetro dos fechas en formato date('Y-m-d') utilizadas en campos DATE de MySQL.
Y devuelve los días que entre la fecha final y la fecha inicial.
También contempla la verificación de una fecha correcta (checkdate) y devuelve un mensaje de error en caso de falla.
Modifíquenlo a su gusto.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment