TigerZF
🌐Español

Capítulo 26. Zend_Date

Tabla de contenidos

26.1. Introducción
26.1.1. Establecer siempre una zona horaria predeterminada
26.1.2. ¿Por qué usar Zend_Date?
26.2. Teoría de funcionamiento
26.2.1. Aspectos internos
26.3. Métodos básicos
26.3.1. Fecha actual
26.3.2. Zend_Date mediante ejemplos
26.3.2.1. Mostrar una fecha
26.3.2.2. Establecer una fecha
26.3.2.3. Sumar y restar fechas
26.3.2.4. Comparación de fechas
26.4. Resumen de la API de Zend_Date
26.4.1. Opciones de Zend_Date
26.4.1.1. Seleccionar el tipo de formato de fecha
26.4.1.2. DST y aritmética de fechas
26.4.1.3. Cálculos de meses
26.4.1.4. Acelerar la localización y normalización de fechas con Zend_Cache
26.4.1.5. Recibir marcas de tiempo sincronizadas con Zend_TimeSync
26.4.2. Trabajar con valores de fecha
26.4.3. Operaciones básicas de Zend_Date comunes a muchas partes de fecha
26.4.3.1. Lista de partes de fecha
26.4.3.2. Lista de operaciones de fecha
26.4.4. Comparar fechas
26.4.5. Obtener fechas y partes de fecha
26.4.6. Trabajar con fracciones de segundos
26.4.7. Amanecer / Atardecer
26.5. Creación de fechas
26.5.1. Crear la fecha actual
26.5.2. Crear una fecha a partir de la base de datos
26.5.3. Crear fechas a partir de un array
26.6. Constantes para funciones generales de fecha
26.6.1. Uso de constantes
26.6.2. Lista de todas las constantes
26.6.3. Formatos de SALIDA autodefinidos con ISO
26.6.4. Formatos de SALIDA autodefinidos usando los especificadores de formato de date() de PHP
26.7. Ejemplos de trabajo
26.7.1. Comprobación de fechas
26.7.2. Amanecer y atardecer
26.7.3. Zonas horarias

26.1. Introducción

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.

26.1.1. Establecer siempre una zona horaria predeterminada

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.

26.1.2. ¿Por qué usar Zend_Date?

Zend_Date ofrece las siguientes características, que amplían el alcance de las funciones de fecha de PHP:

  • API simple

    Zend_Date ofrece 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_Date admite un rango casi ilimitado, con la ayuda de la extensión BCMath. Si BCMath no está disponible, entonces Zend_Date tendrá 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_Date usando 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 de date() de PHP, use el soporte integrado de Zend_Date para 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 :)