Obtener fecha de mañana en PHP

Introducción

Ya vimos cómo obtener los días transcurridos en dos fechas con PHP en un post anterior. Ahora veamos cómo obtener la fecha de mañana, incluso con precisión de segundos.

Por ejemplo, la fecha de hoy que escribo el post es 3 de octubre del 2018 a las 16 con 16 minutos y 18 segundos. La fecha de mañana con precisión de segundos sería 4 de octubre del 2018 a las 16 con 16 minutos y 18 segundos.

Claro que podríamos omitir los minutos y tener únicamente el 4 de octubre del 2018. Pues bien, eso es lo que haremos.

Malos algoritmos

No vamos a poner montones de estructuras if ni descomponer cadenas, utilizaremos las matemáticas. Ya que cualquier persona diría:

Ok hoy es 3 de octubre, tomo el día, le sumo 1 y ya es la fecha de mañana: 4 de octubre

Claro, hasta ahí todo bien, ¿y qué pasa si es 31? ¿sería 32 de octubre? y antes de que respondas, ¿qué tal el 31 de diciembre? ah, y no olvides los años bisiestos.

Por eso es que no vamos a hacer montones de condiciones; utilizaremos las matemáticas y los milisegundos que todo buen lenguaje de programación proporciona.

Cómo obtener la fecha de mañana en PHP

Para obtener la fecha de mañana en PHP debemos saber cuál es la fecha de hoy. Recuerda tener bien tu zona horaria para evitar problemas.

Pues bien, entonces obtenemos la fecha de hoy o la fecha actual usando time.

Esta función devuelve la fecha actual como un entero, el cual representa el tiempo Unix. Pero no hay que meternos en detalles sobre su origen, basta con saber que devuelve la fecha actual expresada en segundos.

$ahora = time();

A ese número le vamos a sumar lo que es un día expresado en segundos, eso se obtiene de multiplicar 24 horas por 60 minutos que tiene cada hora, por 60 segundos que tiene cada minuto.

24 * 60 * 60 = 86,400

Hacemos la operación, y al sumar, tendremos la representación de la fecha de mañana:

Lo único que falta es convertir ese entero a una fecha legible. Y eso lo hacemos llamando a la función date. Si queremos darle el formato YYYY-MM-DD hacemos lo siguiente:

$mananaLegible = date("Y-m-d", $manana);

De esta manera llamamos a date y le decimos que formatee la fecha como año, mes y día. ¿y cuál fecha? bueno, la fecha es la que está como entero; la que está almacenada en $manana.

Es importante notar que únicamente estamos usando a date para formatear un entero y convertirlo a fecha, pero la verdadera fecha está en la variable $manana.

El código completo queda así:

La salida es la siguiente:

Fecha de mañana en php
Fecha de mañana en php

No estamos limitados a usar ese formato para date. Podemos usar cualquiera de los que se listan aquí.

Lo que hay que notar es que utilizando matemáticas dimos con el resultado. Ya a esa fecha podemos imprimirla, guardarla, formatearla o lo que se nos dé la gana.

Si quieres saber cómo ejecutar un archivo PHP haz click aquí.

Más precisión

Arriba simplemente mostramos el año, mes y día. Pero con los segundos podemos obtener precisión de segundos. Si queremos mostrar la fecha y hora de mañana usamos este código:

No hemos movido nada más que los modificadores para formatear la fecha. Usamos H para la hora, i para los minutos y s para los segundos. La salida es:

Hoy es 2018-10-03 17:26:46 y mañana es 2018-10-04 17:26:46

Otra solución más elegante

Si no somos muy fanáticos de las matemáticas, o queremos ser elegantes aquí dejo otra solución.

Dicha solución utiliza <em>strtotime</em> que se traduce como “cadena a tiempo”, la cual recibe como primer argumento una cadena (puede ser una fecha o algún modificador válido) y como segundo argumento opcional recibe un entero representando los segundos.

Esa función devuelve un entero igualmente, en donde ha puesto el resultado de operar la fecha como cadena con el segundo argumento que recibe.

Pero hablar es de mal gusto, aquí el código:

Casi nada cambia, lo único que hacemos es que con strtotime indicamos sumar un día con la cadena +1 day.

Ya con esto nos damos cuenta de que podemos obtener la fecha del siguiente mes, el siguiente año o incluso la fecha de ayer.

Nota: mira más ejemplos de strotime aquí.

Es importante notar que devuelve un entero que más tarde formateamos, justo como lo hacíamos con los otros métodos.

Recuerda que puedes dejar un comentario si tienes dudas.

Encantado de ayudarte


Estoy disponible para trabajar en tu proyecto, modificar el programa del post o realizar tu tarea pendiente, no dudes en ponerte en contacto conmigo.

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.

3 comentarios en “Obtener fecha de mañana en PHP”

  1. Pingback: Fecha de ayer y de mañana en JavaScript - Parzibyte's blog

  2. Pingback: PHP y strtotime para manipular fechas - Parzibyte's blog

  3. Pingback: Formateando fechas en PHP con la función date - Parzibyte's blog

Dejar un comentario