Manejo de fechas con php, suma y resta de minutos, horas, días, semanas, años…

Para sumar o restar a una fecha con php os dejo un pequeño bloque de código, muy intuitivo.

// A la función date le podemos pasar los pasámetros que queramos, si recuperamos un DATETIME de MYSQL: Y-m-d H:i:s
$fechaActual = date ( 'Y-m-d H:i:s');

// Para sumar dos meses
$nuevaFecha = strtotime ( '+2 month' , strtotime ( $fechaActual ) ) ;
$dosMesesMas = date ( 'Y-m-d H:i:s' , $nuevaFecha );

// Para restar un mes
$nuevaFecha = strtotime ( '-1 month' , strtotime ( $fechaActual ) ) ;
$unMesMenos = date ( 'Y-m-d H:i:s' , $nuevaFecha );

// Para sumar 4 días
$nuevaFecha = strtotime ( '+4 day' , strtotime ( $fechaActual ) ) ;
$cuatroDiasMas = date ( 'Y-m-d H:i:s' , $nuevaFecha );

// Para sumar 2 semanas
$nuevaFecha = strtotime ( '+2 week' , strtotime ( $fechaActual ) ) ;
$dosSemanasMas = date ( 'Y-m-d H:i:s' , $nuevaFecha );

// Para restar 1 año
$nuevaFecha = strtotime ( '-1 year' , strtotime ( $fechaActual ) ) ;
$unAnoMenos = date ( 'Y-m-d H:i:s' , $nuevaFecha );

// Para sumar 1 semana, 2 días, 5 horas, y 20 segundos...
$nuevaFecha = strtotime ( '+1 week 2 days 4 hours 2 seconds' , strtotime ( $fechaActual ) ) ;
$total = date ( 'Y-m-d H:i:s' , $nuevaFecha );

¿Fácil no?

Espero sirva de ayuda.


Tu opinión es importante para mi, ¿Te ha resultado útil este artículo?

2 Comments

Hugo Peña

Se puede sumar valores en variables en lugar de constantes?

$nuevaFecha = strtotime ( ‘+$meses’ , strtotime ( $fechaActual ) ) ;

Reply
kike

¡Hola Hugo!

Gracias por escribir 🙂
Si, es posible sumar variables, puedes hacerlo:

$fechaActual = date ( 'Y-m-d H:i:s');

$meses = '+2 month';
$nuevaFecha = strtotime ( $meses , strtotime ( $fechaActual ) ) ;
$resultado = date ( 'Y-m-d H:i:s' , $nuevaFecha );

O puedes hacerlo algo más dinámico:

$fechaActual = date ( 'Y-m-d H:i:s');

$numeroDeMeses = 2; // Aquí pondrías el número de meses.
$sumarMeses = '+' . $numeroDeMeses . ' month';

$nuevaFecha = strtotime ( $sumarMeses , strtotime ( $fechaActual ) ) ;
$resultado = date ( 'Y-m-d H:i:s' , $nuevaFecha );

¡Un saludo!

Reply

Responder a kike Cancelar la respuesta

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

*