<?xml version="1.0" encoding="UTF-8"?>
    <!-- EN-Revision: 24249 -->
    <!-- Reviewed: no -->
<sect1 id="zend.date.introduction">

    <title>Introducción</title>

    <para>
        El componente
        <classname>Zend_Date</classname>
        ofrece una
        <acronym>API</acronym>
        detallada pero simple para manipular fechas y
        horas. Sus métodos aceptan una gran variedad de
        tipos de información,
        incluyendo partes de fecha, en numerosas combinaciones provocando
        muchas
        características y posibilidades más allá de las funciones de fecha
        <acronym>PHP</acronym>
        relacionadas. Para las últimas
        actualizaciones manuales, por favor ver el siguiente link
        <ulink url="http://framework.zend.com/wiki/display/ZFDOCDEV/Home">our
            online manual (sincronizado frecuentemente con Subversion) </ulink>
        .
    </para>

    <para>
        Aunque la simplicidad sea el objetivo, trabajar con fechas y tiempos
        localizados mientras se
        modifican, combinan y comparan partes, provoca
        una complejidad inevitable. Las fechas, así
        como los tiempos, a menudo
        son escritos de forma diferente en zonas locales distintas. Por
        ejemplo,
        algunos colocan primero el mes, mientras otros escriben el año en primer
        lugar cuando
        expresan fechas del calendario. Para más información
        relacionada con manejo de localizaciones
        y normalización, por favor vea
        el manual de
        <link linkend="zend.locale.date.datesandtimes">
            <classname>Zend_Locale</classname>
        </link>
        .
    </para>

    <para>
        <classname>Zend_Date</classname>
        también soporta nombres de meses
        abreviados en varios idiomas.
        <classname>Zend_Locale</classname>
        facilita la normalización de meses localizados y nombres de días de la
        semana a timestamps,
        los cuales pueden, a su vez, ser mostrados
        localizados a otras regiones.
    </para>

    <sect2 id="zend.date.setdefaulttimezone">

        <title>Asigne Siempre una Zona Horaria por Defecto</title>

        <para>
            Antes de utilizar funciones relacionadas con fechas en
            <acronym>PHP</acronym>
            o en el Zend Framework, primero debe
            asegurarse que su aplicación tiene una zona horaria
            correcta por
            defecto, configurando la variable de entorno TZ, usando el parametro
            del
            <filename>php.ini</filename>
            <property>date.timezone</property>
            , o usando
            <ulink url="http://php.net/date_default_timezone_set">
                date_default_timezone_set() </ulink>
            . En
            <acronym>PHP</acronym>
            , podemos ajustar todas las funciones
            relacionadas con fechas y hora para trabajar para
            un usuario
            particular configurando por defecto una zona horaria de acuerdo a
            las
            expectativas del usuario. Para una lista completa de
            configuraciones de zona horaria, vea
            el siguiente link
            <ulink
                url="http://unicode.org/cldr/data/diff/supplemental/territory_containment_un_m_49.html"
            >
                Lista de Identificadores de Zonas Horarias
                <acronym> CLDR
                </acronym>
            </ulink>
            .
            <example id="zend.date.setdefaulttimezone.example-1">
                <title>Configurando una Zona Horaria por Defecto</title>
                <programlisting language="php"><![CDATA[
                // zona horaria para un estadounidense en California
date_default_timezone_set('America/Los_Angeles');
// zona horaria para un alemán en Alemania
date_default_timezone_set('Europe/Berlin');
]]></programlisting>
            </example>

            <emphasis>
                ¡Al crear instancias de
                <classname>Zend_Date</classname>
                , su zona horaria se
                convertirá automáticamente en la zona horaria por defecto
                actual!
            </emphasis>
            De esta forma, la configuración de zona
            horaria tendrá en cuenta cualquier cambio de hora
            de verano
            (Daylight Saving Time,
            <acronym>DST</acronym>
            ), eliminando la necesidad de
            especificarlo explícitamente el horario de verano (Daylight
            Saving Time,
            <acronym>DST</acronym>
            ).
        </para>

        <para>
            Tenga en cuenta que las zonas horarias
            <emphasis>
                <acronym>UTC</acronym>
            </emphasis>
            y
            <emphasis>
                <acronym>GMT</acronym>
            </emphasis>
            no incluyen el cambio de hora de
            verano (Daylight Saving Time,
            <acronym>DST</acronym>
            ). Esto significa que
            aunque defina a mano que
            <classname>Zend_Date</classname>
            deba
            trabajar con
            <acronym>DST</acronym>
            , podría ser anulado por las instancias de
            <classname>Zend_Date</classname>
            que han sido fijadas a
            <acronym>UTC</acronym>
            o
            <acronym>GMT</acronym>
            .
        </para>
    </sect2>

    <sect2 id="zend.date.why">

        <title>¿Por Qué Usar Zend_Date?</title>

        <para>
            <classname>Zend_Date</classname>
            ofrece las siguientes prestaciones,
            las cuales extienden el alcance de las funciones de
            fecha de
            <acronym>PHP</acronym>
            :
        </para>

        <itemizedlist mark="opencircle">
            <listitem>
                <para>
                    <acronym>API</acronym>
                    sencilla
                </para>
                <para>
                    <classname>Zend_Date</classname>
                    aporta una
                    <acronym>API</acronym>
                    muy sencilla, que combina lo
                    mejor de la funcionalidad fecha/hora de cuatro
                    lenguajes de
                    programación. Es posible, por ejemplo, añadir o comparar dos
                    horas
                    dentro de una misma columna.
                </para>
            </listitem>
            <listitem>
                <para>Completamente internacionalizado</para>
                <para>Todos los nombres de meses y días de la semana completos
                    y abreviados están
                    incluidos para más de 130 idiomas. Los
                    métodos admiten tanto entrada como salida
                    de fechas usando
                    los nombres localizados de meses y días de la semana.
               </para>
            </listitem>
            <listitem>
                <para>Timestamps ilimitados</para>
                <para>
                    A pesar de que la documentación de
                    <acronym>PHP</acronym>
                    5.2 indice: "El intervalo de valores admitidos de timestamps
                    es desde el 13 Dec
                    1901 20:45:54
                    <acronym>GMT</acronym>
                    al 19 Ene 2038 03:14:07
                    <acronym>GMT</acronym>
                    ,"
                    <classname>Zend_Date</classname>
                    admite un rango casi
                    ilimitado, con la ayuda de la extensión BCMath. Si BCMath no
                    está disponible, Zend_Date tendrá una funcionalidad de
                    timestamps reducida al
                    rango del tipo float
                    soportado por su
                    servidor. El tamaño de un float es dependiente de la
                    plataforma,
                    aunque un máximo de
                    <command>~1.8e308</command>
                    con una precisión
                    de cerca de 14 dígitos decimales es un valor habitual
                    (formato
                    64 bit
                    <acronym>IEEE</acronym>
                    )." [
                    <ulink url="http://www.php.net/float">http://www.php.net/float</ulink>
                    ]. Adicionalmente, las
                    limitaciones heredadas de los tipos de dato float, y
                    errores
                    de redondeo de números flotantes pueden introducir errores
                    en los
                    cálculos. Para evitar estos problemas, los
                    componentes de Zend Framework I18n
                    usan la extensión BCMath, si está
                    disponible.
                </para>
            </listitem>
            <listitem>
                <para>
                    Soporte para especificaciones de fecha
                    <acronym>ISO-8601</acronym>
                </para>
                <para>
                    Las especificaciones de fecha
                    <acronym>ISO_8601</acronym>
                    están aceptadas.
                    Incluso las especificaciones de fecha
                    <acronym>ISO_8601</acronym>
                    parcialmente
                    autorizadas serán identificadas. Estos formatos de fecha son
                    particularmente útiles al trabajar con bases de datos. Por
                    ejemplo, aunque MsSQL
                    y
                    <ulink url="http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html">MySQL</ulink>
                    difieren ligeramente uno de otro, ambos
                    tienen soporte por parte de
                    <classname>Zend_Date</classname>
                    usando la constante de especificación de formato
                    <link linkend="zend.date.constants.list">Zend_Date::ISO_8601</link>
                    . Cuando las cadenas de fecha
                    sean del tipo "
                    <command>Y/m/d</command>
                    " o "
                    <command>Y-m-d H:i:s</command>
                    ", de acuerdo con los
                    tokens de formato
                    <acronym>PHP</acronym>
                    <methodname>date()</methodname>
                    , use el soporte integrado de
                    <classname>Zend_Date</classname>
                    para fechas formateadas
                    <acronym>ISO 8601</acronym>
                    .
                </para>
            </listitem>
            <listitem>
                <para>Calcular amanecer y puesta de sol</para>
                <para>
                    Las horas de amanecer y puesta de sol pueden mostrarse
                    para cualquier lugar y
                    día, para que no pierda ni un segundo
                    de luz diurna para trabajar en su proyecto
                    <acronym>PHP</acronym>
                    favorito :)
                </para>
            </listitem>
        </itemizedlist>

    </sect2>

</sect1>
