PHP: Restar Fechas
14,276 LecturasLes dejo una función en PHP que permite restar dos Fechas. Esto puede servir para mostrar la cantidad de días de la publicación de un Artículo, etc.
<?
// Fecha en formato dd/mm/yyyy o dd-mm-yyyy retorna la diferencia en dias
function restaFechas($dFecIni, $dFecFin)
{
$dFecIni = str_replace(”-”,”",$dFecIni);
$dFecIni = str_replace(”/”,”",$dFecIni);
$dFecFin = str_replace(”-”,”",$dFecFin);
$dFecFin = str_replace(”/”,”",$dFecFin);
ereg( “([0-9]{1,2})([0-9]{1,2})([0-9]{2,4})”, $dFecIni, $aFecIni);
ereg( “([0-9]{1,2})([0-9]{1,2})([0-9]{2,4})”, $dFecFin, $aFecFin);
$date1 = mktime(0,0,0,$aFecIni[2], $aFecIni[1], $aFecIni[3]);
$date2 = mktime(0,0,0,$aFecFin[2], $aFecFin[1], $aFecFin[3]);
return round(($date2 - $date1) / (60 * 60 * 24));
}
// Ej.: con fechas fijas
$resultado_resta = restaFechas(’01-05-2007′,’04-05-2007′);
echo “Artículo publicado hace “.$resultado_resta.” días.”;
// Podemos reemplazar la fecha inicial fija, por las que tengamos en el registro del Artículo de la base de datos
// Ej.: $resultado_resta = restaFechas( $fecha_articulo , date(’d-m-Y’) );
?>
Ejemplo escrito por: Eduardo Tapia


Jul 31, 2007 a las 3:50 pm
Monroy dice,
hola, yo lo q no puedo hacer es como restar por ejemplo la fecha de hoy, asignada a una variable, eso si lo se hacer, lo q no se es como sacar la otra fecha q esta guardada en la base de datos para restarla con la fecha de hoy q se encuentra en una variable?, te lo agradeceria mucho que me ayudaras
Ago 21, 2007 a las 7:32 pm
Alberto Rocca dice,
Hola, a ver si puedo ayudarte:
1ª) conectarse a tu base de datos:
Abr 22, 2008 a las 11:13 am
Esteban dice,
Hola, la verdad me sirvió mucho tu script, pero no en la forma que deseaba, porque la base de datos mysql tiene el formato (yyyy-mm-dd), pero me sirvió de base para investigar y adaptar tu código a mi necesidad.
Monroy, parece que necesitaria esta adaptación, asi que alli va.
// Fecha en formato yyyy-mm-dd
function restaFechas($dFecIni, $dFecFin)
{
$dFecIni = str_replace(”-”,”",$dFecIni);
$dFecFin = str_replace(”-”,”",$dFecFin);
ereg( “([0-9]{4})([0-9]{1,2})([0-9]{1,2})”, $dFecIni, $aFecIni);
ereg( “([0-9]{4})([0-9]{1,2})([0-9]{1,2})”, $dFecFin, $aFecFin);
$date1 = mktime(0,0,0,$aFecIni[2], $aFecIni[3], $aFecIni[1]);
$date2 = mktime(0,0,0,$aFecFin[2], $aFecFin[3], $aFecFin[1]);
return round(($date2 - $date1) / (60 * 60 * 24));
}
$hoy = date(”Y-m-d”); //leo la fecha actual
$resultado_resta = restaFechas($row6[Fecha_de_Suscripcion],$hoy); //resto la fecha de hoy menos la fecha alamacenada en la base de datos. (En mi caso es para mostrar anuncios por 90 dias)
echo “Artículo publicado hace “.$resultado_resta.” días.”;
Espero que les sirva
Saludos
Esteban
Http://www.HacerFortuna.com
Jul 25, 2008 a las 5:01 pm
Daniel dice,
Saludos, quiero agradecerte por tu script de verdad que me servio muchisimo. de nuevo gracias
Ago 28, 2008 a las 6:15 pm
Hector dice,
Gracias. Me re-sirvió
Nov 3, 2008 a las 11:32 pm
Checo Mendoza dice,
Gracias, lo que andaba buscando, excelente!
Nov 4, 2008 a las 11:14 am
Víctor dice,
Hola, muy buen script de hecho me servira…
Lo que necesito hacer es pintar los nombres de los dias que hay entre 2 fechas agrupados por semanas, si tienes algun consejo de como podria hacerlo agradeceria tus comentarios.
Saludos,
Ene 10, 2009 a las 3:26 pm
George el Hermitaño dice,
Buen codigo, anteriormente estaba buscando en google y no encontre ninguno que se adaptara tanto a mis necesidades. esto me permite colocar fecvhas a los articulos que publico como que fuera wordpress… Saludos
Abr 11, 2009 a las 5:01 am
Eddy Ruiz dice,
Gracias ME sirvio este Script… para mi Pagina Web.
Abr 28, 2009 a las 8:57 pm
Funky Kong dice,
Gracias, tu script me ha servido, simple y práctico
May 28, 2009 a las 10:50 am
Adrian Esqueda dice,
buenos dias, estaba buscando un formato para resta fechas y llegue hasta aqui, de verdad es bbueno el codigo pero una pregunta como se hara para que en vez de mostrar el resultado en dias lo pueda hacer en meses?
agradeceria cualquiera ayuda, muchas gracias de atemano
Jun 9, 2009 a las 1:04 pm
David (Personal Collect) dice,
GRACIAS !!!! EL SCRIPT ME SIRVIO DE MUCHO!!!!! MUY BUEN SCRIPT PARA LAS FECHAS CON FORMATO YYYY-MM-DD
Jul 10, 2010 a las 7:20 pm
Maria dice,
Gracias, anda muy bien!!!! …
Jul 19, 2010 a las 12:17 pm
Segio dice,
De verdad, gracias, realmente me sirvió mucho tu script
ESTA REALMENTE BUENO.