Sumar o restar días, semanas, meses o años a una fecha con PHP

Hola a todos:

Hoy os traigo una función que aunque sencilla puede ser muy útil cuando trabajamos con fechas en PHP.

En ocasiones necesitamos sumar o restar días a la fecha actual o a una fecha dada.

Vamos a crear una pequeña función que nos permite sumar o restar días, semanas, meses o años a una fecha:

<?php
function sumaFechas ($suma,$fechaInicial = false)
{
  $fecha = !empty($fechaInicial) ? $fechaInicial : date('Y-m-d');
  $nuevaFecha = strtotime ($suma , strtotime ( $fecha ) ) ;
  $nuevaFecha = date ( 'Y-m-d' , $nuevaFecha );
  return $nuevaFecha;
}
?>

La función recibe dos parámetros, el primero es la cantidad de días, semanas, meses o años que vamos a sumar o restar y el segundo es la fecha a la que se los vamos a sumar.

Si no se pasa el parámetro fechaInicial la función tomará la fecha actual.

Para sumar 3 días al 15 de junio del 2014 llamamos a la función de esta manera:

echo sumaFechas('3 day', '2014-06-15');

Para sumar 3 semanas:

echo sumaFechas('3 week', '2014-06-15');

Recordad que también podemos restar poniendo el número en negativo:

echo sumaFechas('-4 month', '2014-06-15');

Veamos un ejemplo completo con varias posibilidades que podéis probar y que cubren todas las posibilidades que podéis necesitar:

<?php
function sumaFechas ($suma,$fechaInicial = false)
{
  $fecha = !empty($fechaInicial) ? $fechaInicial : date('Y-m-d');
  $nuevaFecha = strtotime ($suma , strtotime ( $fecha ) ) ;
  $nuevaFecha = date ( 'Y-m-d' , $nuevaFecha );
  return $nuevaFecha;
}
// Suma 5 días a la fecha 2014-06-15
echo sumaFechas('5 day', '2014-06-15').'<br/>';
// Suma 5 días a la fecha actual
echo sumaFechas('5 day').'<br/>';
// Resta una semana a la fecha '2014-06-15'
echo sumaFechas('-1 week', '2014-06-15').'<br/>';
// Suma 3 semanas a la fecha '2014-06-15'
echo sumaFechas('3 week', '2014-06-15').'<br/>';
// Suma 4 meses a la fecha '2014-06-15'
echo sumaFechas('4 month', '2014-06-15').'<br/>';
// Suma 2 años a la fecha '2014-06-15'
echo sumaFechas('2 year', '2014-06-15').'<br/>';
?>

Y eso es todo por hoy, espero que os sirva de ayuda.  😉

No dudéis en dejar en los comentario cualquier duda que os surja.

Un saludo, y si aún no lo has hecho no olvides suscribirte a mi blog para no perderte los próximos posts  :-),

También puedes seguirme en Twitter en ‎@revigames y no olvides que me ayudas mucho si compartes este post en las redes sociales.

2 comentarios en “Sumar o restar días, semanas, meses o años a una fecha con PHP

  1. Buenas,

    Gracias por la info.
    Y que significa el paramentro ? => $fecha = !empty($fechaInicial) ? $fechaInicial : date(‘Y-m-d’);
    Y por que si quiero sumarle a una fecha mas de 47 años me devuelve la fecha 1970?
    Por ejemplo:
    function sumaFechas ($suma,$fechaInicial = false)
    {
    $fecha = !empty($fechaInicial) ? $fechaInicial : date(‘Y-m-d’);
    $nuevaFecha = strtotime ($suma , strtotime ( $fecha ) ) ;
    $nuevaFecha = date ( ‘Y-m-d’ , $nuevaFecha );
    return $nuevaFecha;
    }
    echo sumaFechas(‘100 year’, ‘1991-10-04’);

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.