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 strtotime 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.


Estoy disponible para trabajar en tu proyecto o realizar tu tarea pendiente, no dudes en ponerte en contacto conmigo.
Si el post fue de tu agrado muestra tu apoyo compartiéndolo, suscribiéndote al blog, siguiéndome o realizando una donación.

Suscribir por correo

Ingresa tu correo y recibirás mis últimas entradas sobre programación, open source, bases de datos y todo lo relacionado con informática

Únete a otros 7,375 suscriptores

parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

3 Comentarios

Fecha de ayer y de mañana en JavaScript - Parzibyte's blog · octubre 5, 2018 a las 10:02 am

[…] vimos cómo saber la fecha de mañana en PHP. Veamos hoy cómo podemos saber la fecha de ayer y la fecha de mañana en […]

PHP y strtotime para manipular fechas - Parzibyte's blog · octubre 4, 2018 a las 2:05 pm

[…] 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á […]

Formateando fechas en PHP con la función date - Parzibyte's blog · octubre 4, 2018 a las 11:12 am

[…] Dicho esto, en el segundo argumento podemos pasar otro entero como ya vimos cuando obtuvimos la fecha de mañana en PHP. […]

Deja un comentario

Marcador de posición del avatar

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

A %d blogueros les gusta esto: