PHP y strtotime para manipular fechas

Introducción

Ya vimos cómo sumarle un día a la fecha de hoy para sacar la fecha del otro día, o la fecha de mañana en PHP. Ahora veamos otras cosas interesantes que podemos hacer con strtotime. Lo que haremos será ver cómo:

  1. Obtener la fecha de hace un año
  2. Saber la fecha que será dentro de un año
  3. Restar y sumar meses a una fecha
  4. Sumar minutos a una fecha y hora
  5. Operar con semanas
Operar con fechas en PHP usando strtotime
Operar con fechas en PHP usando strtotime

Adicionalmente te invito a leer cómo saber la fecha de inicio y fin de mes en PHP y cómo saber los días transcurridos entre 2 fechas.

Por cierto, si tienes dudas de cómo usamos a date para formatear las fechas te recomiendo este post.

Obtener la fecha del año pasado con strtotime

Usamos este código:

<?php
$tiempoDelAnioPasado = strtotime("-1 year");
$formateado = date("Y-m-d H:i:s", $tiempoDelAnioPasado);
echo "Hoy hace un año era $formateado";

Con strtotime le restamos un año a la fecha actual, eso devolverá un entero con segundos que más tarde formateamos con date. El resultado al menos al ejecutar el script mientras escribo esto, es:

Hoy hace un año era 2017-10-04 11:22:51

Saber la fecha que será dentro de un año

Ya deberíamos saber cómo hacerlo, si para restar usamos -1 year entonces para sumar o ver la fecha del futuro usamos +1 year.

Quiero aclarar que podemos poner +10 year, o +50 year, es decir, cambiar los años. Pero bueno veamos la fecha que será dentro de un año

<?php
$tiempoDelAnioFuturo = strtotime("+1 year");
$formateado = date("Y-m-d H:i:s", $tiempoDelAnioFuturo);
echo "Dentro de un año será $formateado";

La salida en mi caso es:

Dentro de un año será 2019-10-04 11:30:07

Restar y sumar meses

Así como operamos con años, podemos operar con meses.

Sumar meses

Podemos sumar meses a una fecha, no importa si son más de 12. Comencemos viendo este ejemplo que dice la fecha que será dentro de un mes:

<?php
$dentroDeUnMes = strtotime("+1 month");
$formateado = date("Y-m-d H:i:s", $dentroDeUnMes);
echo "Dentro de un mes será $formateado";

Cuya salida es:

Dentro de un mes será 2018-11-04 11:34:29

Podemos también, sumar 14 meses, que sería un año y 2 meses. Como al momento de escribir esto es octubre de 2018, la salida debería ser el mes de diciembre del 2019.

Vamos allá:

<?php
$dentroDeCatorceMeses = strtotime("+14 month");
$formateado = date("Y-m-d H:i:s", $dentroDeCatorceMeses);
echo "Dentro de 14 meses será $formateado";

Notemos que aunque el plural de month es months, usamos month de igual manera (aunque el parseador de PHP sí lo soporta, pero recomiendo dejar todo en singular).

La salida es como lo esperábamos:

Dentro de 14 meses será 2019-12-04 11:36:15

Restar meses

Podemos operar con meses como en el ejemplo de arriba, pero utilizando - en lugar de +.

<?php
$haceNueveMeses = strtotime("-9 month");
$formateado = date("Y-m-d H:i:s", $haceNueveMeses);
echo "Hace 9 meses era $formateado";

La salida es:

Hace 9 meses era 2018-01-04 11:38:13

Así de fácil podemos restar meses. Y como lo dije, podemos usar incluso más de 12 meses que sería un año.

Sumar minutos a una fecha y hora

La función strtotime no nos limita a fechas, también podemos sumar minutos. Veamos este código de ejemplo que suma 15 minutos:

<?php
$dentroDeQuinceMinutos = strtotime("+15 minute");
$formateado = date("Y-m-d H:i:s", $dentroDeQuinceMinutos);
$formateadoAhora = date("Y-m-d H:i:s");
echo "Ahora es $formateadoAhora y dentro de quince minutos será $formateado";

La variable de $formateadoAhora es para ilustrar la hora actual. La salida es:

Ahora es 2018-10-04 11:46:40 y dentro de quince minutos será 2018-10-04 12:01:40

Igualmente podríamos restar minutos. Por ejemplo, si queremos restar 100 minutos usaríamos -100 minute.

Operar con semanas

También podemos sumar semanas y días. Para las semanas:

<?php
$dentroDeDosSemanas = strtotime("+2 week");
$formateado = date("Y-m-d H:i:s", $dentroDeDosSemanas);
$formateadoAhora = date("Y-m-d H:i:s");
echo "Ahora es $formateadoAhora y dentro de 2 semanas será $formateado";

En ese caso la salida es:

Ahora es 2018-10-04 13:56:31 y dentro de 2 semanas será 2018-10-18 13:56:31

Con días también podemos trabajar. Si sumamos 14 días es como sumar 2 semanas. Entonces hacemos esto:

<?php
$dentroDeCatorceDias = strtotime("+14 day");
$formateado = date("Y-m-d H:i:s", $dentroDeCatorceDias);
$formateadoAhora = date("Y-m-d H:i:s");
echo "Ahora es $formateadoAhora y dentro de 14 días será $formateado";

El resultado es el mismo:

Ahora es 2018-10-04 13:58:32 y dentro de 14 días será 2018-10-18 13:58:32

Está de más mencionar que podemos igualmente restar semanas y días con la función strtotime de php.

Más formatos y operaciones

Esto es únicamente una introducción con ejemplos que me parecen que le servirán a otros programadores.

Si quieres ver la lista de todos los formatos disponibles que entiende strotime te invito a ver la documentación oficial.

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

No te pierdas ninguno de mis posts 🚀🔔

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.

Dejar un comentario

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