php

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:

<?php
$unDiaEnSegundos = 24 * 60 * 60;
$manana = $ahora + $unDiaEnSegundos;

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í:

<?php
/*
    Fecha de mañana en PHP
    parzibyte.me/blog
*/$ahora = time();
$unDiaEnSegundos = 24 * 60 * 60;
$manana = $ahora + $unDiaEnSegundos;
$mananaLegible = date("Y-m-d", $manana);
# ahoraLegible únicamente es para demostrar
$ahoraLegible = date("Y-m-d", $ahora);
echo "Hoy es $ahoraLegible y mañana es $mananaLegible";

La salida es la siguiente:

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:

<?php
/*
    Fecha de mañana en PHP, con precisión de segundos
    parzibyte.me/blog
*/$ahora = time();
$unDiaEnSegundos = 24 * 60 * 60;
$manana = $ahora + $unDiaEnSegundos;
$mananaLegible = date("Y-m-d H:i:s", $manana);
# ahoraLegible únicamente es para demostrar
$ahoraLegible = date("Y-m-d H:i:s", $ahora);
echo "Hoy es $ahoraLegible y mañana es $mananaLegible";

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:

<?php
/*
    Fecha de mañana en PHP, de manera elegante
    parzibyte.me/blog
*/$ahora = time();
# Le decimos que ahora, + 1 día
$manana = strtotime("+1 day", $ahora);
$mananaLegible = date("Y-m-d", $manana);
# ahoraLegible únicamente es para demostrar
$ahoraLegible = date("Y-m-d", $ahora);
echo "Hoy es $ahoraLegible y mañana es $mananaLegible";

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

Ver comentarios

Entradas recientes

Desplegar PWA creada con Vue 3, Vite y SQLite3 en Apache

Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…

3 días hace

Arquitectura para wasm con Go, Vue 3, Pinia y Vite

En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…

3 días hace

Vue 3 y Vite: crear PWA (Progressive Web App)

En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…

3 días hace

Errores de Comlink y algunas soluciones

Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…

3 días hace

Esperar promesa para inicializar Store de Pinia con Vue 3

En este artículo te voy a enseñar cómo usar un "top level await" esperando a…

3 días hace

Solución: Apache – Server unable to read htaccess file

Ayer estaba editando unos archivos que son servidos con el servidor Apache y al visitarlos…

4 días hace

Esta web usa cookies.