W3docs

cal_info()

Guía completa sobre la función date() de PHP para formatear fechas y horas, con parámetros, ejemplos y solución de problemas comunes.

date()

Introducción

La función date() es una de las funciones integradas de PHP más utilizadas para formatear fechas y horas. Esta guía cubre sus parámetros, ejemplos de uso y cómo solucionar problemas comunes.

Descripción general de la función date() de PHP

La función date() es una función integrada en PHP que permite formatear la fecha y la hora de diversas maneras. Acepta dos parámetros: la cadena de formato y la marca de tiempo. La cadena de formato especifica cómo deben mostrarse la fecha y la hora, mientras que la marca de tiempo es opcional e indica el instante que se quiere formatear. Si no se especifica la marca de tiempo, se usan la fecha y la hora actuales.

Parámetros de la función date()

La cadena de formato usada en la función date() puede contener varios caracteres de formato que se sustituyen por los valores correspondientes para formatear la fecha y la hora. Algunos de los caracteres de formato más utilizados son:

  • d: Día del mes (01 a 31)
  • m: Mes (01 a 12)
  • Y: Año (cuatro dígitos)
  • H: Hora en formato de 24 horas (00 a 23)
  • i: Minutos (00 a 59)
  • s: Segundos (00 a 59)
  • l: Representación textual completa del día de la semana (Sunday–Saturday)

Nota: Los caracteres de formato distinguen entre mayúsculas y minúsculas. Por ejemplo, d muestra el día con ceros iniciales (01–31), mientras que D muestra el día como abreviatura de texto (Mon–Sun). Del mismo modo, l (L minúscula) devuelve el nombre completo del día, mientras que L indica si el año es bisiesto (1 o 0).

Ejemplos de uso

Veamos algunos ejemplos del uso de la función date() para formatear la fecha y la hora:

echo date("Y/m/d"); // outputs: 2023/03/02
echo date("H:i:s"); // outputs: 14:35:22
echo date("Y-m-d H:i:s"); // outputs: 2023-03-02 14:35:22

También puedes pasar una marca de tiempo opcional como segundo parámetro para formatear un momento específico en el tiempo:

echo date("Y-m-d", 1677724800); // outputs: 2023-03-02 (UTC)

Nota: La marca de tiempo 1677724800 representa un momento específico en UTC. La fecha mostrada cambiará si la zona horaria predeterminada de tu servidor es distinta de UTC.

Como puedes ver, la cadena de formato se puede personalizar para mostrar la fecha y la hora en distintos formatos.

Solución de problemas comunes

Hay algunos problemas habituales que los desarrolladores pueden encontrar al usar la función date(). A continuación se describen los más frecuentes junto con sus soluciones:

  • Caracteres de formato no reconocidos: date() muestra literalmente cualquier carácter de formato no reconocido en lugar de lanzar un error. Asegúrate de usar caracteres de formato válidos según la documentación oficial de PHP.
  • Límites del rango de marcas de tiempo: En sistemas de 32 bits, las marcas de tiempo fuera del rango 1970–2038 pueden producir resultados inesperados o desbordamiento de enteros. Usa la clase DateTime para fechas fuera de este rango.
  • Advertencias de zona horaria: En PHP 8.1+, llamar a date() sin una zona horaria configurada genera una advertencia de obsolescencia. Establece la zona horaria al inicio de tu script usando date_default_timezone_set('UTC'); (o tu zona horaria preferida).

Conclusión

En conclusión, la función date() de PHP es una herramienta potente que permite a los desarrolladores formatear la fecha y la hora de diversas maneras. Gracias a sus parámetros personalizables y su facilidad de uso, es una opción popular entre desarrolladores de todo el mundo. Para operaciones de fecha y hora más complejas, considera usar la clase moderna DateTime de PHP, que ofrece métodos orientados a objetos y un mejor manejo de zonas horarias. Siguiendo las pautas descritas en este artículo, podrás evitar problemas comunes y aprovechar al máximo esta versátil función.

Práctica

Práctica
¿Qué funciones se usan en PHP para devolver información sobre el calendario especificado?
¿Qué funciones se usan en PHP para devolver información sobre el calendario especificado?
Was this page helpful?