Cómo mostrar fecha y hora en php según el formato deseado

Cuando desarrollamos una página web o un programa, la fecha y hora en php es algo imprescindible ya sea para algo tan sencillo para la parte del usuario como guardar la fecha y hora en un formato correcto para mysql. PHP ofrece una serie de funciones y constantes para tratar diferentes formatos de fecha y hora.

La función time

La función time indica el número de segundos desde la fecha del 1 de enero de 1970. Esto es debido a que PHP emplea timestamps de Unix. Si quisierámos determina el timestamp actual con al fucnión time()

Si empleamos la función time(), cómo podríamos obtener el timestamp de un período de terminado? Habría que multiplicar el número de días que queremos sumar o restar por las 24 horas que tiene un día por los 60 minutos que tiene una hora y por los 60 segundos que tiene un minuto. Por ejemplo si queremos el timestamp de dentro de 1 mes

Si se diera el caso de crear un timestamp con una fecha en concreto, podemos emplear mktime(). Los parámetros que acepta esta función son (de izquierda a derecha):

  • El número de la hora (0–23)
  • El minute (0–59)
  • Los segundos (0–59)
  • El número del mes (1–12)
  • El número del día (1–31)
  • El año  (1970–2038, o 1901–2038 en PHP 5.1.0+ en sistemas de 32-bit). Esto me recuerda al famoso bug Y2K38 el cuál sería otro “efecto 2000”. Y por qué? Bueno, los desarrolla dores de Unix no eran tan optimistas y pensaron que el S.O. no duraría más de 70 años.

Obtener fecha y hora en php con date()

Si queremos mostrar la fecha actual podemos emplear la función date() que permite diversos parámetros para adaptarlo al formato que deseemos. Acepta como parámetros un formato en string que contiene especificadores (algo parecido que printf) y un timestamp en Unix. Estos son algunos delos especificadores más usados

Formato Descripción Valor devuelto
Especificadores de días
j Número del día sin 0 1 a 31
N Día de la semana numérico(lunes a domingo) 1 al 7
w Día de la semana pero de domingo a sabado 0 al 6
z Día del año 0 a 365
Especificadores de semana
w Número de la semana de un año 01 a 52
Especificadores de mes
n Número del mes 1 a 12
t número de días de un mes en concreto 28 a 31
Especificadores de año
y Año en 2 dígitos 00 a 99
Y Año en 4 dígitos 0000 a 9999
Especificadores de hora
g hora del día en formato 12 1 a 12
G Hora en formato 24 horas 00 a 23
i Minutos con ceros 00 a 59
s Segundos con ceros 00 a 59

Una vez sabemos qué especificadores cuenta la función date() procedo con un ejemplo. La fecha a mostrar será la de hoy con un formato como este: 02/10/2017 *** 18:00

Como comenté antes, también se acepta un timestamp, en este caso voy a poner el timestamp de dentro de una semana.

Constantes

Hay una serie de constantes que con la función date(), podemos devolverla fecha y hora en PHP con diferentes formatos.

DATE_ATOM

Si quieres la fecha y hora en formato Atom feed. Por ej:”2018-08-16T12:00:00+00:00″ .

DATE_COOKIE

Sigue el formato de una cookie de web server o javascript. Ej: “Thursday, 16-Aug-18 12:00:00 UTC”

DATE_RSS

Basándose en el formato de feed RSS. Ej: “Thu, 16 Aug 2018 12:00:00 UTC”.

DATE_W3C

Sigue el formato según el W3C(World Wide Web Consortium). Ej: “2018-08-16T12:00:00+00:00” .

Validar una fecha con checkdate()

Hay muchos formatos para mostrar una fecha válida  pero, cómo comprobar si un usuario envía una fecha válida a través de los datos de un formulario? Mediante checkdate podemos comprobar si una fecha es válida sin embargo, tenemos que pasarle el mes, año y día por separado. Esta función devolverá TRUE si la fecha válida y FALSE en caso den o serlo.

Por ejemplo, el día 30 es completamente válido en un formulario pero con febrero no es así, ya que dispone  de 28 (29 si es año bisiesto). Por tanto, si alguien introduce el 30-02-2018 sería inválido.

Esto incluso tiene en cuenta los años bisiestos, lo cual te puede ahorrar muchos quebraderos de cabeza si tienes que validar una fecha.

Y hasta aquí la cómo mostrar la fecha y hora en php, espero que os haya gustado. A seguir picando 😉