Tabla de contenidos
- 26.1. Introducción
- 26.2. Teoría de funcionamiento
- 26.3. Métodos básicos
- 26.4. Resumen de la API de Zend_Date
- 26.5. Creación de fechas
- 26.6. Constantes para funciones generales de fecha
- 26.7. Ejemplos de trabajo
El componente Zend_Date ofrece una API detallada,
pero simple, para manipular fechas y horas. Sus métodos aceptan una amplia variedad
de tipos de información, incluyendo partes de fecha, en numerosas combinaciones, dando lugar a muchas
características y posibilidades por encima de las funciones de fecha existentes en PHP.
Para las últimas actualizaciones del manual, consulte nuestro manual en línea (sincronizado
frecuentemente con Subversion).
Aunque la simplicidad sigue siendo el objetivo, trabajar con fechas y horas localizadas al
modificar, combinar y comparar partes implica cierta complejidad inevitable. Tanto las fechas
como las horas a menudo se escriben de forma diferente en distintas configuraciones regionales. Por ejemplo, algunos ponen
primero el mes, mientras que otros escriben primero el año al expresar fechas de calendario. Para más
información sobre el manejo de la localización y la normalización, consulte Zend_Locale.
Zend_Date también admite nombres abreviados de meses en muchos
idiomas. Zend_Locale facilita la normalización de nombres localizados
de meses y días de la semana a marcas de tiempo, que a su vez pueden mostrarse localizadas para otras
regiones.
Antes de usar cualquier función relacionada con fechas en PHP o Zend Framework,
primero asegúrese de que su aplicación tenga una zona horaria predeterminada correcta, ya sea estableciendo
la variable de entorno TZ, usando el ajuste date.timezone
de php.ini, o usando date_default_timezone_set().
En PHP, podemos ajustar todas las funciones relacionadas con fecha y hora para que funcionen
para un usuario particular estableciendo una zona horaria predeterminada según las expectativas del usuario.
Para una lista completa de configuraciones de zona horaria, consulte la lista de identificadores
de zona horaria de CLDR.
Ejemplo 26.1. Establecer una zona horaria predeterminada
// timezone for an American in California
date_default_timezone_set('America/Los_Angeles');
// timezone for a German in Germany
date_default_timezone_set('Europe/Berlin');
Al crear instancias de Zend_Date, su zona horaria se
convertirá automáticamente en la zona horaria predeterminada actual! Por lo tanto, la configuración de zona horaria
tendrá en cuenta cualquier horario de verano (DST) vigente,
eliminando la necesidad de especificar explícitamente el DST.
Tenga en cuenta que las zonas horarias UTC y
GMT no incluyen el horario de verano. Esto
significa que incluso si define manualmente que Zend_Date debería funcionar
con DST, se desactivaría automáticamente para las instancias
de Zend_Date que se hayan establecido en UTC o
GMT.
Zend_Date ofrece las siguientes características, que amplían el alcance
de las funciones de fecha de PHP:
-
API simple
Zend_Dateofrece una API muy simple, que combina lo mejor de la funcionalidad de fecha y hora de cuatro lenguajes de programación. Es posible, por ejemplo, sumar o comparar dos horas en una sola línea. -
Completamente internacionalizado
Se admiten todos los nombres completos y abreviados de meses y días de la semana para más de 130 idiomas. Los métodos admiten tanto la entrada como la salida de fechas usando los nombres localizados de meses y días de la semana, en el formato convencional asociado a cada configuración regional.
-
Marcas de tiempo ilimitadas
Aunque la documentación de PHP 5.2 indica: "El rango válido de una marca de tiempo normalmente va desde el vie, 13 dic 1901 20:45:54 GMT hasta el mar, 19 ene 2038 03:14:07 GMT",
Zend_Dateadmite un rango casi ilimitado, con la ayuda de la extensión BCMath. Si BCMath no está disponible, entoncesZend_Datetendrá soporte reducido, solo para marcas de tiempo dentro del rango del tipo float admitido por su servidor. "El tamaño de un float depende de la plataforma, aunque un máximo de ~1.8e308 con una precisión de aproximadamente 14 dígitos decimales es un valor común (eso es el formato IEEE de 64 bits)." [ http://www.php.net/float ]. Además, las limitaciones inherentes de los tipos de datos float, y el error de redondeo de los números float pueden introducir errores en los cálculos. Para evitar estos problemas, los componentes I18n de Zend Framework usan la extensión BCMath, si está disponible. -
Soporte para especificaciones de fecha ISO-8601
Se admiten las especificaciones de fecha ISO-8601. Incluso las especificaciones de fecha ISO-8601 parcialmente conformes serán identificadas. Estos formatos de fecha son particularmente útiles al trabajar con bases de datos. Por ejemplo, aunque MsSQL y MySQL difieren un poco entre sí, ambos son admitidos por
Zend_Dateusando la constante de especificación de formato Zend_Date::ISO_8601. Cuando las cadenas de fecha se ajustan a "Y/m/d" o "Y-m-d H:i:s", según los tokens de formato dedate()de PHP, use el soporte integrado deZend_Datepara fechas con formato ISO-8601. -
Calcular amanecer y atardecer
Para cualquier lugar y día, se pueden mostrar las horas de amanecer y atardecer, para que no se pierda ni un segundo de luz solar mientras trabaja en su proyecto PHP favorito :)