PHP: Restar Fechas
1,721 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