mitago.net

Página web de Celso González

Fechas y horas en PHP

Trabajar con fechas en PHP siempre ha sido un dolor, especialmente si trabajas con usuarios que introducen las fechas en varios formatos y cuando tienes que adaptar estos para meterlos en la base de datos. mktime hasta aburrir y entonces con las nuevas versiones sacan un nuevo objeto, con una documentación díficil de encontrar, llamado DateTime que pretende solucionar parte de esos problemas. Pues bien, aunque ayuda, no lo consigue ni de lejos.

Lo primero enlazo una revisión bastante completa Looking at PHP5’s DateTime and DateTimeZone en la que nos cuenta más o menos lo siguiente aderezado con mis notas.

Se consiguen resolver los problemas de zonas horarias, aunque te interesa la función date_default_timezone_set() si sigues usando mktime ya que puedes obtener resultados no deseados.

La instrucción format, así como la posibilidad de hacer cálculos de fechas están bien, algo recargadas en el estilo y limitadas pero cumplen su trabajo y se resuelve parcialmente el problema de fechas fuera del rango de epoch, digo parcialmente ya que no hay forma de comparar fechas de forma nativa, tiene que ser a base de conversiones normalmente a format epoch, con lo que se nos presenta de nuevo el problema de los rangos.

Podemos crear un objeto datetime directamente desde una string y aunque en el documento está mal, tambien se puede crear un datetime a partir de un epoch si añadimos delante el carácter @, que sirve para hacer un cast a timestamp.

Por lo demás, seguimos con dificultades. Obtener, por ejemplo, el último día del mes o el segundo lunes de un mes dado sigue siendo farragoso y espero que arreglen esto antes de que me cambie por completo a Python

mar 03 junio 2008 23:294 comentarios