¿Por qué hay solo una clase Zend_Date para manejar fechas y horas en
Zend Framework?
Muchos lenguajes dividen el manejo de horas y fechas de calendario en dos clases. Sin embargo,
Zend Framework busca la máxima simplicidad, y obligar al desarrollador a gestionar diferentes
objetos con diferentes métodos para horas y fechas se convierte en una carga en muchas situaciones.
Dado que los métodos de Zend_Date permiten trabajar con fechas ambiguas
que podrían no incluir todas las partes (era, año, mes, día, hora, minuto, segundo, zona horaria),
los desarrolladores disfrutan de la flexibilidad y facilidad de usar la misma clase y los mismos métodos para
realizar las mismas manipulaciones (por ejemplo, suma, resta, comparación, combinación de partes de
la fecha, etc.). Dividir el manejo de estos fragmentos de fecha en varias clases
crearía complicaciones cuando se desea una interoperación fluida con una curva de aprendizaje reducida. Una
única clase reduce la duplicación de código para operaciones similares, sin necesidad de una compleja
jerarquía de herencia.
-
Marca de tiempo UNIX
Todas las fechas y horas, incluso las ambiguas (por ejemplo, sin año), se representan internamente como momentos absolutos en el tiempo, expresados como una marca de tiempo UNIX que expresa la diferencia entre la hora deseada y el 1 de enero de 1970 00:00:00 GMT. Esto solo fue posible porque
Zend_Dateno está limitada a las marcas de tiempo UNIX ni a valores enteros. Se requiere la extensión BCMath para soportar fechas extremadamente grandes fuera del rango vie, 13 dic 1901 20:45:54 GMT a mar, 19 ene 2038 03:14:07 GMT. Además, pueden surgir pequeños errores matemáticos debido a las limitaciones inherentes de los tipos de datos de punto flotante y el redondeo, a menos que se use la extensión BCMath. -
Partes de la fecha como desplazamientos de la marca de tiempo
Así, un objeto instancia que representa tres horas se expresaría como tres horas después del 1 de enero de 1970 00:00:00 GMT -es decir, 0 + 3 * 60 * 60 = 10800.
-
Funciones de PHP
Cuando es posible,
Zend_Datenormalmente usa funciones de PHP para mejorar el rendimiento.