Al momento de realizar un nuevo desarrollo en ocasiones es necesario agregar la fecha, pero muchas veces los servidores o la configuración nos muestran la fecha en un formato que no esperamos.

Formas de mostrar una fecha en PHP

La función más común es date(), con ella podemos obtener la fecha en el formato que deseemos de acuerdo a las opciones existentes pero lamentablemente no admite cambio de idioma entonces las fechas que obtengamos serán mostradas en inglés.

Por ejemplo si utilizamos el siguiente formato:

echo date('l jS \of F Y h:i:s A');

Nos mostrará algo así:

Thursday 16th of April 2020 02:32:56 AM

A pesar de que en el momento que llamo la función son las 9:32 PM del 16 de abril 2020 para ver que representa cada uno de los caracteres de formato pueden entrar a la documentación de date().

Ahora utilizaremos strftime() que muestra la fecha y hora de acuerdo a la configuración local y además puede cambiarse su idioma:

strftime("%A %d of %B %Y %r");

SI lo utilizamos normalmente nos dará algo así:

Thursday 16 of April 2020 02:40:27 AM

Ahora vamos a hacer un cambio de idioma y después arreglaremos la hora a la zona horario que queremos setlocale() que nos permite asignar la información local por ejemplo:

setlocale(LC_ALL,'es_ES');
echo date('l jS \of F Y h:i:s A');
echo strftime("%A %d de %B %Y %r");

Y eso nos dará como resultado algo así:

Thursday 16th of April 2020 03:03:12 AM
jueves 16 de abril 2020 03:03:12 AM

Con esto usando strftime() ya nos muestra la fecha en español gracias a setlocale() aunque en date no hay cambios, ahora corregiremos la hora de acuerdo a la zona horaria que necesitemos utilizando date_default_timezone_set() que nos permite asignar una zona horaria independientemente del servidor utilizando la lista de zonas horarias admitidas.

date_default_timezone_set('America/Mexico_City');

Cambiamos un poco el código y quitamos date() ya que no lo usaremos:

date_default_timezone_set('America/Mexico_City');
setlocale(LC_ALL,'es_ES');
echo strftime("%A %d of %B %Y %r");

Y con ello ya tendremos la fecha en español y correspondiente a la zona horaria esperada:

miércoles 15 of abril 2020 10:10:00 PM

Espero les sirva en sus siguientes proyectos.