Restar o sumar meses, dias, semanas o años a una fecha en php

Luego de un rato buscando por la web el código fuente de una función que me permita restar con PHP a la fecha actual 12 meses de manera fácil y segura sin tener que restar segundos ni preocuparme por cuandos dias tiene cada mes lo único que encontraba eran funciones complejas personalizadas que hacian mil tranformaciones usaban expresiones regulares explode list y quien sabe que otras cosas que a decir verdad me daban un poco de miedito sobre si funcionarian bien siempre. Por lo que segui buscando y encontre en la mismisima página de php un pequeño ejemplo que aca extiendo de como restar meses, dias, semanas o años a la fecha actual.

Para restar a la fecha actual:

$nuevaFecha= date(‘Y-m-d’, strtotime(‘-1 day’)) ; // resta 1 día

$nuevaFecha= date(‘Y-m-d’, strtotime(‘-1 week’)) ; // resta 1 semana

$nuevaFecha= date(‘Y-m-d’, strtotime(‘-1 month’)) ; // resta 1 mes

$nuevaFecha= date(‘Y-m-d’, strtotime(‘-1 year’)) ; // resta 1 año

para restar mas de 1 simplemente se cambia el 1 por el numero que se quiera
por ejem para restar 12 meses


$nuevaFecha= date(‘Y-m-d’, strtotime(‘-12 month’)) ; // resta 12 mes

para sumar simplemente se debe cambiar el – por + por ejem

$nuevaFecha= date(‘Y-m-d’, strtotime(‘+12 month’)) ; // suma 12 mes

This entry was posted in PHP. Bookmark the permalink.

4 thoughts on “Restar o sumar meses, dias, semanas o años a una fecha en php

  1. Excelente aporte, yo queiro hacer lo siguiente:
    Dada una fecha en un campo de texto agregarle un mes y luego a esa nueva fecha agregarle otro mes y asi sucesivamente hasta completar un año. Ya ce que es un con un for, pero solo me hace las 2 primeras fechas y el resto me pone la segunda fecha.

  2. Gracias, la aproveche para sacar si tenian 18 años o no

    function DiferenciaEntreFechas($fecha_secundaria) {

    $hacemucho = date(“Y-m-d”, strtotime(“-216 month”));
    $nacio = date(“Y-m-d”, strtotime($fecha_secundaria));

    if ($hacemucho < $nacio) {
    return TRUE;
    } else {
    return FALSE;
    }
    }

Deja un comentario

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

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>