Hacer ciclos con fechas en PHP

Ciclo while con fechas en PHP

Hoy en la mañana estuve platicando con un compañero sobre un algoritmo para hacer un ciclo while con PHP que fuera desde una fecha hasta otra, día a día. Por ejemplo, un ciclo que fuera desde el 18 de marzo hasta el 25 de marzo y en cada iteración se pudiera obtener el día.

Hacer ciclos con fechas en PHP
Hacer ciclos con fechas en PHP

Gracias a las funciones de strtotime y date fue una tarea fácil, y hoy vengo a explicar cómo es por si a alguien más le sirve.

Fecha como segundos desde fecha Unix

Primero debemos tener el tiempo en segundos de la fecha. Por ejemplo, la fecha del 18 de enero del 2019 representada como los segundos que han pasado desde la fecha Unix es de 1552867200 segundos.

Para convertir una fecha en forma de cadena a su representación como segundos usamos strtotime que devuelve los segundos y recibe una cadena que es una fecha.

El ciclo while con su incremento

En este caso queremos que el “step” del ciclo sea de un día. Un día representado como segundos equivale a 86400 (24 horas * 60 minutos por hora * 60 segundos por minuto), por lo tanto hay que ir aumentando este número en cada iteración.

El ciclo se terminará cuando el tiempo inicio alcance o supere al tiempo de fin, aumentando de día a día.

Iterar fechas con PHP: día a día

Hablar es de mal gusto así que veamos el código. Es un ciclo while que aumenta en un día, se rompe cuando $tiempoInicio alcanza a $tiempoFin.

Dentro del ciclo obtenemos la fecha legible y la formateamos con la función date.

Usamos printf como alternativa a echo, lo explico únicamente por si genera confusiones. La salida es la siguiente:

Tal vez se piense que se puede solucionar con un simple ciclo, pero no es así. Tendrías que lidiar con más cosas como saber el fin de mes, los años bisiestos (para lo del mes de febrero), los días totales de un mes, incrementar el año, etcétera.

Un rango más alto

Si cambiamos el rango a uno más largo, por ejemplo, que haya un mes de diferencia, la salida es esta:

No tuvimos que modificar ningún otro valor, solamente las fechas. Esta es la ventaja de trabajar con las fechas como se debe en lugar de crear algoritmos complejos.

Ahora que ya hicimos esto podemos jugar un poco más.

Ciclo while con fecha y hora en PHP

Hagamos esto un poco más divertido, haciendo que el ciclo avance una hora a la vez. Hay que modificar el incremento y formatear la fecha de distinta manera, nada complejo:

El algoritmo en general no cambió, simplemente cambia el formato y el step. La salida es la siguiente:

Avanzar con horas, minutos y segundos

Ya no pondré el código, pues con los ejemplos de arriba se entiende. Pero con este enfoque podemos hacer un ciclo que avance minuto a minuto o segundo a segundo. También podríamos hacer que avance cada 15 minutos.

Conclusión

Para terminar el post te invito a probar los ejercicios en línea:

Recuerda que puedes descargar el código y ejecutarlo en la web o con la terminal; incluso puedes hacerlo en Android.

Te invito a ver más sobre PHP o algoritmos con fechas en mi blog.

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.

Dejar un comentario