TigerZF
🌐Español

26.2. Teoría de funcionamiento

¿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.

26.2.1. Detalles internos

  • 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_Date no 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_Date normalmente usa funciones de PHP para mejorar el rendimiento.