Problemas con las fechas en timestamp Unix de PHP

  • Por
Algunas de las funciones de cálculo de fechas de PHP utilizan el timestamp Unix que está restringido a fechas comprendidas entre determinados años. Explicamos la manera de utilizar un rango de años mucho mayor.
Existen en PHP una serie de funciones muy útiles para realizar cálculos de fechas, como por ejemplo, saber si una fecha es válida, obtener un dato concreto de una fecha, como el día, la hora o el día del mes o la semana.

En teoría, cualquier cálculo con fechas básico se puede realizar con las funciones que provee el lenguaje, que se pueden observar en la documentación de PHP, concretamente en la URL http://www.php.net/manual/es/ref.datetime.php

El problema del Timestamp Unix

Muchas de las funciones de PHP se basan en el Timestamp de Unix que es el número de segundos transcurridos desde las 00:00:00 del 1 de enero de 1970 GMT. Por ejemplo la utilísima función date(), que recibe un string con el formato que se desea para la fecha y un timestamp de Unix para introducir la fecha que se pretende formatear.

El problema que se encontrará con los cálculos de fecha es que el timestamp empieza a contar desde 1970. ¿Qué pasa con las fechas anteriores? Además, el timestamp, como estructura de datos, tiene un tamaño fijo, es decir, una capacidad limitada hasta el año 2038. En concreto soporta los siguientes intervalos de años:

Windows: desde 1970 hasta 2038
Unix: desde 1901 hasta 2038

Este artículo pretende dar a conocer un mecanismo para poder trabajar con fechas fuera de este intervalo.

Librería adodb_date_time_library

Existen varios métodos de solventar este problema, pero nosotros vamos a hablar de uno muy sencillo y fácil de utilizar. Se trata de la librería adodb_date_time, que se puede descargar y utilizar gratuitamente en nuestras aplicaciones.

Esta librería soporta fechas desde el año 100 D.C. hasta billones de años en el futuro.

Se puede descargar desde http://phplens.com/phpeverywhere/adodb_date_library

Para utilizarla, simplemente debemos sustituir algunas de las funciones típicas de fechas de PHP por las que implementa la librería.

getdate() reemplazar por adodb_getdate()
date() reemplazar por adodb_date()
gmdate() reemplazar por adodb_gmdate()
mktime() reemplazar por adodb_mktime()
gmmktime()reemplazar por adodb_gmmktime()

Nosotros ya hemos probado la librería con éxito en alguna creación nuestra, así que la recomendamos encarecidamente cuando supongamos que las fechas con las que vamos a trabajar se salen del intervalo del timestamp Unix.

Para ampliar esta información será imprescindible acceder a la página de inicio de la librería y enterarnos de todos los detalles sobre su uso.

http://phplens.com/phpeverywhere/adodb_date_library

Autor

Miguel Angel Alvarez

Miguel es fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Comenzó en el mundo del desarrollo web en el año 1997, transformando su hobby en su trabajo.

Compartir

Comentarios

Miguel Sanhueza

22/11/2005
La dirección que se menciona en el articulo, no responde.
¿como se habilita la solución al problema de fechas anteriores a 1970?