PHP: Restar o Sumar Dias, Semanas, Meses o Años a la fecha actual

Recordemos que la funcion date(‘Y-m-d’), nos devuelve la fecha actual en el formato ‘Año-mes-dia’ y si queremos otro formato solo cambiamos el orden, por ejemplo date(‘d-m-Y’). El siguiente script muestra como Restar Dias, Semanas, Meses o Años a la fecha actual en PHP.

El codigo

$dt_Ayer= date('Y-m-d', strtotime('-1 day')) ; // resta 1 día
$dt_laSemanaPasada = date('Y-m-d', strtotime('-1 week')) ; // resta 1 semana
$dt_elMesPasado = date('Y-m-d', strtotime('-1 month')) ; // resta 1 mes
$dt_ElAnioPasado = date('Y-m-d', strtotime('-1 year')) ; // resta 1 año
//Mostrar fechas
echo $dt_Ayer;
echo $dt_laSemanaPasada;
echo $dt_elMesPasado;
echo $dt_ElAnioPasado;
/*
Resultado (fecha actual: 2012-09-18):
2012-09-17
2012-09-11
2012-08-18
2011-09-18
*/

…Por el contrario si lo que deseas es sumar entonces solo cambias el signo – por un +, asi:
$dt_5DiasDespues = date('Y-m-d', strtotime('+5 day')) ; // Suma 5 días
$dt_5SemanasDespues = date('Y-m-d', strtotime('+5 week')) ; // Suma 5 semanas
$dt_5MesesDespues = date('Y-m-d', strtotime('+5 month')) ; // Suma 5 meses
$dt_5AniosDespues = date('Y-m-d', strtotime('+5 year')) ; // Suma 5 años
//Mostrar fechas
echo $dt_5DiasDespues;
echo $dt_5SemanasDespues;
echo $dt_5MesesDespues;
echo $dt_5AniosDespues;
/*
Resultado (fecha actual: 2012-09-18):
2012-09-23
2012-10-23
2013-02-18
2017-09-18
*/

¿Facil, no?

 

Si tienes alguna duda expresala en un comentario. Saludos.
 
 
Enlaces relacionados:
 
 

Acerca de gonzasilve
Freelance Web Developer.

18 Responses to PHP: Restar o Sumar Dias, Semanas, Meses o Años a la fecha actual

  1. vanessa dice:

    en donde debo colocar ese codigo?

  2. Oscar campos dice:

    Hola, me gustaria saber como puedo hacer eso mismo pero de un dato rescatado de una base de datos, de una fecha entregada? ejemplo del 05-01-2010 gracias

  3. Jai dice:

    Hola, cómo se haría que mediante una función o clase solo se pueda hacer más o menos así:

    echo resultadodia($dia,-1);

  4. SI necesitan esta funcion suma los dias y verifica que no sea sabado o domingo, caso contrario arrastra al primer dia laborable.

    function sumarDiaLaborables($fecha, $dias) {

    $nuevafecha = date(‘Y-m-d’, strtotime(“+$dias day”, strtotime($fecha)));

    $diasemana = strtolower(date(‘l’, strtotime($nuevafecha)));

    if ($diasemana == “saturday” || $diasemana == “sunday”) {

    if ($diasemana == “saturday”) {

    $sumar_dias = 2;

    }

    if ($diasemana == “sunday”) {

    $sumar_dias = 1;

    }

    return $this->sumarDiaLaborables($nuevafecha, $sumar_dias);

    } else

    return $nuevafecha;

    }

  5. david dice:

    muchas gracias amigo

  6. Luis dice:

    No funciona a la perfección , deberías probar todas las probabilidades, por que por ejemplo hoy es 31 de enero y quiero sumarle un mes y me devuelve 3 de marzo , lo cual es erróneo. Muchas gracias Por La atención Prestada , Saludos.

  7. Buena aportación.

  8. Patricia dice:

    Tengo una tabla con una fecha en formato y-m-d hh-mm-ss….. como extraigo solo la fecha y a esa fecha le sumo el tiempo que tengo en otro campo???

  9. criszz dice:

    como hago para restarle una semana pero teniendo solo los campos de dia y mes sin necesidad de tener los años para respuestas mi correo es
    elcris1793@hotmail.com

  10. criszz dice:

    como hago para restarle una semana pero teniendo solo los campos de dia y mes sin necesidad de tener los años

  11. ben dice:

    hola en mi formulario quiero sumar años a mi fecha inicial para que me de como resultado fecha final automaticamente con php como hago gracias por responder

  12. Alejandro dice:

    Hola, muy bueno. me sirvio muchisimo.
    Les dejo como lo utilice yo por si alguno le sirve, con variable
    // primero chequear si la resta a sumar o restar es negativa o positiva

    if ($total < 0){
    /* $total es obtenido por otra funcion que resta la fecha actual con la duracion de un numero en dias obtenido de una base de datos.*/
    Funcion restar fechas.
    $Fecha_Mensaje = date("j-n-Y");
    $Fecha_Mensaje = strtotime("$Fecha_Mensaje");
    $fecha_alta = strtotime("$fecha_alta"); // $fecha_alta obtenido desde base de datos ej, 05-8-2013
    $datediff = $Fecha_Mensaje – $fecha_alta;
    $restan = floor($datediff/(60*60*24));
    $total = $duracion – $restan;

    $restoactual = "$total day"; // en este caso daría un numero negatio, ej -5
    }else{
    $restoactual = "+$total day"; // en este caso daría un numero positivo ej -5 y le agrego el + para que funcione.
    }
    $dt_definir= date('d-m-Y', strtotime($restoactual)) ; //

    Saludos.

  13. Marieli dice:

    Necesito sumar los meses, pero si estos se pasan del rango, es decir que llegaran a ser 14 meses, que cambie de año, como puedo hacer eso?

    • Marieli dice:

      Ya pude hacerlo, gracias por aportar tus conocimientos 🙂

    • gonzasilve dice:

      Gracias por visitar Marieli. Saludos cordiales.

  14. Pingback: PHP: Mostrar la fecha actual en español « .::programming notes::. Gonzalo Silverio

  15. Pingback: PHP: Obtener el ultimo día de cualquier mes « .::programming notes::. Gonzalo Silverio

  16. Pingback: PHP: Sumar o Restar Dias a cualquier fecha « .::programming notes::. Gonzalo Silverio

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: