lunes, 9 de abril de 2012

Trabajar con fechas y horas en PHP y MySQL

Trabajar con horas y fechas en PHP es muy importante, ya que con ello podemos llevar a cabo tareas tan trascendentales como controlar a qué hora ha sido introducido o modificado un registro en una base de datos o imprimir la fecha y/u hora variando su formato en nuestras páginas web.
Lo más adecuado en todos los casos suele ser almacenar la fecha en formato unix en una variable:
$fecha = time();
De este modo guardamos en la variable $fecha todos los segundos que han transcurrido desde las doce de la noche del 1 de enero de 1970. $fecha será, por tanto, un número entero al que podremos sacar partido con la función "date()" para que muestre la fecha u hora en el formato que nos interese:
$fecha_con_formato = date("formato",$fecha);
Los parámetros más importantes que podemos introducir en "formato" son los siguientes:
Parámetro Descripción Parámetro Descripción
d Día del mes con ceros iniciales (De 01 a 31).  h Hora en formato 12-horas con ceros iniciales.
j Día del mes sin ceros iniciales (De 1 a 31).  H Hora en formato 24-horas con ceros iniciales.
 m Número del mes con ceros iniciales (De 01 a 12).  i Minutos con ceros iniciales.
 n Número del mes sin ceros iniciales (De 1 a 12). s Segundos con ceros iniciales.
Y Año con cuatro dígitos (Ejemplo: 2007). A AM o PM.
y Año con dos dígitos (Ejemplo: 07).  T Configuración de zona horaria del servidor.

Ejemplo: Si es el 19 de octubre de 2007 y son las 12:25, el siguiente código:
$fecha_con_formato = date("d/m/Y -- H:i:s",$fecha);
nos devolverá:
19/10/2007 -- 12:25:33
Si vamos a introducir la fecha en una base de datos (por ejemplo MySQL), lo más apropiado - a mi juicio - es guardar la fecha en formato unix, es decir, en un campo de tipo BigINT(11), ya que así tendremos una mayor versatilidad a la hora de mostrarla respecto a si lo hacemos en un campo DATE, DATETIME o TIMESTAMP (enlace en inglés).
Es posible pasar a formato unix una fecha determinada utilizando la función mktime(hora, min, seg, mes, día, año) o comprobar si una determinada fecha es válida, mediante la función checkdate(mes, día, año). Puedes ver aquí un ejemplo de uso de cada una de ellas.

No hay comentarios:

Publicar un comentario

Find out where a user is located in OU structure with a search

It seems that very few people actually know how to find out where a user account is actually located in AD. The easiest way is to start...