jueves, 11 de octubre de 2007

Manejar fechas

Es normal tener que modificar el formato de una fecha para adaptarlo a un tipo de base de datos, o para presentarlo a un usuario. En general, strtotime nos provee una buena herramienta para hacerlo, ya que soporta el formato tradicional de MySQL y muchos otros, pero el problema suele estar cuando queremos recibir una fecha en formato dd/mm/yy, ya que por defecto esta función toma el formato estadounidense mm/dd/yy y puede confundirse 01/07 con el 7 de enero, en vez del 1 de julio que esperábamos. La solución que ofrece PHP es con la función strptime, que nos permite indicar el formato de la fecha. Sin embargo, esta función es muy nueva (desde PHP 5.1.0) y no está implementada en Windows, con lo que es bastante limitada. Por lo tanto, podemos crear una pequeña función, con este propósito.

function strtotime2($date)
{
if (preg_match('#^((0?[1-9])|([1-2]?[0-9])|(3[0-1]))/(0?[1-9]|(1[0-2]))/((19|20)?([0-9]{2}))$#', $date))
{
list($day, $month, $year) = explode('/', $date);
return mktime(0, 0, 0, $month, $day, $year);
} else
{
return strtotime($date);
}
}

No hay comentarios: