Fechas en PHP con date y DateTime

Resumen

Trabajar con fechas en PHP es mucho más sencillo que en otros lenguajes gracias a funciones nativas como date, time y la clase DateTime. Si estás aprendiendo backend con PHP y necesitas formatear fechas, calcular intervalos o manejar zonas horarias, este recorrido te muestra qué herramientas tienes disponibles y cuándo conviene usar cada una.

¿Qué hace la función date en PHP y cómo se usa?

La función date es la base para trabajar con fechas en PHP. Da formato a una fecha u hora local y recibe dos parámetros: el primero es el format, que es obligatorio, y el segundo es un timestamp opcional.

El format es un string en el que defines exactamente qué dato quieres obtener: año, mes, día, hora, minutos o segundos. Si no le pasas un timestamp, la función te devuelve la fecha y hora actual del servidor [01:30].

¿Qué es la función date en PHP? Es una función que da formato a una fecha u hora local. Recibe un string de formato y, opcionalmente, un timestamp Unix para formatear una fecha distinta a la actual.

¿Qué caracteres de formato puedo usar con date?

La documentación oficial incluye una tabla que conviene tener siempre cerca. Estos son los caracteres más usados en el día a día:

  • d: día del mes con dos dígitos y ceros iniciales (01 a 31).
  • D: representación textual corta del día con tres letras en inglés (Mon a Sun).
  • j: día del mes sin ceros iniciales.
  • l (ele minúscula): nombre completo del día de la semana en inglés (Sunday a Saturday).
  • m: representación numérica del mes con ceros iniciales (01 a 12).
  • Y: año con cuatro dígitos (por ejemplo, 2003).
  • y: año con dos dígitos.

Para la hora también hay opciones muy útiles. Puedes pedir el formato de 24 horas o el de 12 horas, y PHP se encarga de la conversión por ti. Incluso puedes solicitar el indicador am o pm en mayúsculas o minúsculas sin escribir lógica adicional [03:50].

¿Qué es la época Unix y para qué sirve la función time?

La función time devuelve la fecha Unix actual, es decir, el número de segundos transcurridos desde el 1 de enero de 1970 hasta el momento actual. Ese punto en el tiempo es lo que se conoce como época Unix [07:20].

¿Qué es un timestamp Unix? Es un número entero que representa cuántos segundos han pasado desde el 1 de enero de 1970. PHP lo usa internamente para representar y comparar fechas.

Este número es la base para trabajar con fechas en PHP. Si quieres una fecha en específico, necesitas saber cuántos segundos han pasado desde 1970 hasta esa fecha, pero no te preocupes por hacer ese cálculo a mano: PHP tiene funciones que lo resuelven por ti.

Un caso clásico de uso aparece con cookies. Cuando defines la expiración de una cookie, sumas a time() la cantidad de segundos que quieres que dure. Así obtienes una fecha futura expresada como timestamp Unix.

¿Cuándo usar la clase DateTime en lugar de date?

PHP ofrece dos formas de trabajar con fechas: la forma estructurada, basada en funciones como date y time, y la forma orientada a objetos, basada en la clase DateTime.

La clase DateTime cumple un rol muy similar al de la función date, pero recibe los parámetros en su constructor. Por defecto toma el valor now para el tiempo, y puedes definir también la zona horaria con TimeZone [05:30]. La elección entre una u otra suele depender del estilo del proyecto y de si necesitas encadenar operaciones de manera más expresiva.

¿Cómo formatear intervalos con DateInterval?

Cuando calculas la diferencia entre dos fechas, lo que obtienes es un intervalo de tiempo, representado por la clase DateInterval. Para darle formato usas el método format, en el que cada carácter debe ir prefijado con el signo de porcentaje.

Imagina que quieres saber cuánto tiempo hay entre 2003 y 2015. De esa diferencia puedes extraer:

  • La cantidad de años entre las dos fechas.
  • La cantidad de meses acumulados.
  • La cantidad total de días, sin importar que también restes años.

Eso es lo potente de DateInterval: te deja descomponer el intervalo en la unidad que necesites para tu lógica de negocio [06:30].

¿Cuál es la diferencia entre date y DateTime en PHP? date es una función que devuelve un string formateado a partir de un timestamp. DateTime es una clase que representa la fecha como objeto, permite manipulaciones encadenadas y maneja zonas horarias de forma nativa.

¿Qué otras funciones de fechas trae PHP?

La documentación de PHP incluye una lista extensa de funciones para trabajar con fechas y horas. Muchas de ellas son alias de métodos de la clase DateTime, lo que confirma que ambas formas, estructurada y orientada a objetos, comparten el mismo motor por debajo.

Vale la pena revisar esa lista para tener un mapa mental de lo que ya viene resuelto: conversiones entre formatos, sumas y restas de tiempo, comparaciones, validaciones y manejo de zonas horarias. En las siguientes clases vamos a profundizar en varias de estas funciones y a comparar de cerca el enfoque estructurado con el orientado a objetos.

¿Tú con cuál te sientes más cómodo trabajando, con date o con DateTime? Cuéntame en los comentarios cómo manejas las fechas en tus proyectos.