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

How To Convert Virtual Machines Between VirtualBox and VMware

Migrating to another virtual machine program can be intimidating. if you already have your virtual machines set up they way you like th...