php

Formateando fechas en PHP con la función date

Introducción

Día de la semana en PHP con date y arreglos

La función date en PHP funciona para formatear fechas usando algunos modificadores. Lo que hace es formatear un entero que representa a los segundos desde la fecha Unix.

Esta función llamada date recibe 2 argumentos: el primero es obligatorio y es un string que indica el formato.

El segundo es opcional y es un entero representando los segundos transcurridos desde la fecha Unix, si no lo mandamos entonces PHP tomará lo que devuelva la función time.

Devuelve un string con la fecha formateada según el formato indicado.

Para ejemplificar con código, este fragmento en donde no pasamos el segundo argumento…

$fecha = date("Y-m-d");

Y este otro en donde sí lo pasamos pero es time, son completamente lo mismo:

$fecha = date("Y-m-d", time());

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

Pero lo que hoy veremos será múltiples formatos de fecha en PHP que nos pueden ser útiles.

Formateando fechas con PHP y date

Antes de continuar quiero dejar la documentación oficial en donde podemos ver todos los formatos que existen, aquí listaré únicamente los que me parecen que son de más ayuda.

De igual forma, si tu fecha está mal te recomiendo que veas cómo poner la zona horaria de acuerdo a tu país o lugar de residencia.

Formato con año, mes y día

Este formato es el que más me gusta, aunque claro, no a todos les gustará el que a mí me gusta. En fin, lo pondré primero de igual forma.

Lo que nos dará es algo como 2018-10-04 o YYYY-MM-DD. El formato es:

Y-m-d

El modificador Y es para el año con cuatro cifras, el m para el mes y el d es para el día del mes. Lo usamos así:

$fecha = date("Y-m-d");

Por cierto, los guiones - no son procesados, por lo tanto serán devueltos como están.

Primero el día, luego el mes y finalmente el año

Ahora veamos cómo obtener un formato de DD-MM-YYYY o algo como 04-10-2018. Sería así:

$fecha = date("d-m-Y");

Usamos los mismos modificadores pero en diferente orden.

Con barras o diagonales

En los ejemplos anteriores usamos un guión como separador. También podemos usar la barra / como se ve en el siguiente ejemplo. Ahí obtenemos algo como 04/10/2018:

$fecha = date("d/m/Y");

Lo que hacemos es cambiar los guiones por la barra o diagonal.

Únicamente el año

Si solamente queremos saber el año, pasamos el modificador Y. Así como se ve:

See the gist on github.

De esta forma PHP regresará el año.

El día de la semana (lunes, martes, etcétera)

Como sabemos, los lenguajes de programación (o la mayoría de ellos) entienden en idioma inglés.

Ya sea porque es el lenguaje universal o porque la mayoría de creadores hablan ese idioma, el punto es que si queremos obtener el día de la semana como cadena no podemos hacerlo tan fácil (o tal vez sí, es cuestión de investigar).

Una alternativa a date es usar strftime y setlocale para obtener los días en el idioma que deseemos, pero hoy estamos viendo a date así que con date lo haremos.

Lo que yo propongo es obtener el día de la semana como número, es decir, un entero del 0 al 6 en donde 0 es domingo y 6 es sábado.

Para esto, PHP ofrece el modificador w que hace justo lo que queremos. Lo llamamos así:

$diaDeLaSemana = date("w");

Más tarde podemos convertirlo a entero y usarlo como índice, pero antes de ello definimos un simple arreglo con los días:

See the gist on github.

Finalmente usamos el día de la semana como índice para acceder a nuestro arreglo. Y con eso tendremos la cadena del día. Veamos el ejemplo:

See the gist on github.

Parece complicado pero no lo es. Simplemente aprovechamos que date devuelve un número entre 0 y 6 y a ese lo usamos como índice. Si es 6, entonces al acceder al arreglo obtendremos el día Sábado. Si es 0 entonces obtenemos Domingo, y así para los otros días.

Año, mes, día, hora, minutos y segundos

Este formato también lo utilizo en mis timestamps. Lo único que hace es mostrar la fecha en un formato que da como resultado 2018-10-04 10:36:20, es decir, el año, mes, día, un espacio, la hora, los minutos y los segundos.

See the gist on github.

Ahora usamos otros modificadores aparte de los que ya conocemos, el H da la hora. La i minúscula da los minutos y la s minúscula los segundos.

Como vemos, los dos puntos : son omitidos, al igual que el espacio que hay entre la fecha y la hora.

Únicamente la hora

La función date, aunque quiere decir algo como “fecha” también devuelve horas o tiempo como lo vimos arriba. Si sólo queremos obtener la hora actual…

See the gist on github.

Lo que hacemos es llamar a date con el modificador H. Por cierto, devuelve la hora en formato de 24 horas, así que para las 11 de la noche devuelve 23.

La hora con minutos y segundos

Veamos cómo usar a date para obtener la hora, los minutos y los segundos en un formato que dará como resultado algo como 10:49:50

See the gist on github.

Casi lo mismo que hemos visto arriba.

El número de semana del año

Se supone que el año tiene 52 semanas, yo tampoco lo entiendo bien pero comienzan a contarse desde el primer lunes del año.

El punto es que para obtener el número de semana usamos el modificador W, es decir, la letra doble u en mayúscula:

See the gist on github.

Días que tiene un mes

Aunque esto no tiene que ver con formatear fechas, habrá ocasiones en las que esto será útil. Por ejemplo, para obtener el total de días sin importar que sea año bisiesto.

No recuerdo bien pero algo me dice que a esta función la usamos para obtener el inicio y fin de mes en un post anterior.

El modificador que usamos es la letra t en minúscula. Veamos un ejemplo de código:

See the gist on github.

Saber si es AM o PM

Para terminar, veamos cómo obtener un “am” o “pm” dependiendo del momento del día. Se supone que es am desde las doce de la noche (hora 00:00:00) o madrugada, hasta las 11:59:59 del día.

Y es pm desde las 12:00:00 hasta las 23:59:59.

See the gist on github.

Para esto usamos el modificador a, el cual devolverá am o pm. Y si los queremos en mayúsculas usamos el modificador A (en mayúscula), el cual devolverá AM o PM.

Conclusión

Esta función es muy útil si sabemos explotarla al máximo. Muchos critican la forma en la que PHP maneja las fechas, y recomiendan usar la clase Date.

Yo digo que es cuestión de cada uno, ya que al final ni el lenguaje ni las funciones hacen al programador.

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

Imprimir PDF con Bot de Telegram

La impresión de un PDF en cualquier impresora se puede automatizar con un bot de…

4 días hace

Enviar mensaje con bot de Telegram usando JavaScript (lado del cliente)

Hoy te enseñaré cómo enviar un mensaje a un usuario desde un bot de Telegram…

4 días hace

PHP: incrustar imagen en base64

El día de hoy te enseñaré algo muy sencillo pero útil al programar con PHP:…

4 días hace

Plugin ESC POS – Actualización 3.4.0: imprimir HTML

El plugin para imprimir en impresoras térmicas alcanza hoy su versión 3.4.0 agregando soporte para…

5 días hace

JavaScript (lado del cliente): leer pixeles de imagen

En ocasiones es necesario leer los pixeles y colores de una imagen con JavaScript del…

2 semanas hace

PHP y JavaScript: llenar select con AJAX

Siguiendo con los tutoriales de listas desplegables o select con JavaScript, vamos a ver cómo…

2 semanas hace

Esta web usa cookies.