Zend_Date-Introduction.xml 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 15103 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.date.introduction">
  5. <title>Introducción</title>
  6. <para>
  7. El componente
  8. <classname>Zend_Date</classname>
  9. ofrece una API detallada pero simple para manipular fechas y
  10. horas. Sus métodos aceptan una gran variedad de tipos de
  11. información, incluyendo partes de fecha, en numerosas
  12. combinaciones provocando muchas características y posibilidades
  13. más allá de las funciones de fecha PHP relacionadas. Para
  14. las últimas actualizaciones manuales, por favor ver el siguiente
  15. link <ulink
  16. url="http://framework.zend.com/wiki/display/ZFDOCDEV/Home">our
  17. online manual (sincronizado frecuentemente con Subversion)
  18. </ulink>
  19. .
  20. </para>
  21. <para>
  22. Aunque la simplicidad sea el objetivo, trabajar con fechas y
  23. tiempos localizados mientras se modifican, combinan y comparan
  24. partes, provoca una complejidad inevitable. Las fechas, así como
  25. los tiempos, a menudo son escritos de forma diferente en
  26. zonas locales distintas. Por ejemplo, algunos colocan primero el
  27. mes, mientras otros escriben el año en primer lugar cuando
  28. expresan fechas del calendario. Para más información relacionada
  29. con manejo de localizaciones y normalización, por favor
  30. vea el manual de
  31. <link linkend="zend.locale.date.datesandtimes">
  32. <classname>Zend_Locale</classname>
  33. </link>
  34. .
  35. </para>
  36. <para>
  37. <classname>Zend_Date</classname>
  38. también soporta nombres de meses abreviados en varios idiomas.
  39. <classname>Zend_Locale</classname>
  40. facilita la normalización de meses localizados y nombres de días
  41. de la semana a timestamps, los cuales pueden, a su vez, ser
  42. mostrados localizados a otras regiones.
  43. </para>
  44. <sect2 id="zend.date.setdefaulttimezone">
  45. <title>Asigne Siempre una Zona Horaria por Defecto</title>
  46. <para>
  47. Antes de utilizar funciones relacionadas con fechas en PHP o
  48. en el Zend Framework, primero debe asegurarse que su
  49. aplicación tiene una zona horaria correcta por defecto,
  50. configurando la variable de entorno TZ, usando el
  51. parametro del php.ini
  52. <methodname>date.timezone</methodname>
  53. , o usando
  54. <ulink url="http://php.net/date_default_timezone_set">
  55. date_default_timezone_set()
  56. </ulink>
  57. . En PHP, podemos ajustar todas las funciones relacionadas
  58. con fechas y hora para trabajar para un usuario particular
  59. configurando por defecto una zona horaria de acuerdo a las
  60. expectativas del usuario. Para una lista completa de
  61. configuraciones de zona horaria, vea el siguiente link
  62. <ulink url="http://unicode.org/cldr/data/diff/supplemental/territory_containment_un_m_49.html">
  63. Lista de Identificadores de Zonas Horarias CLDR
  64. </ulink>
  65. .
  66. <example id="zend.date.setdefaulttimezone.example-1">
  67. <title>Configurando una Zona Horaria por Defecto</title>
  68. <programlisting language="php"><![CDATA[
  69. // zona horaria para un estadounidense en California
  70. date_default_timezone_set('America/Los_Angeles');
  71. // zona horaria para un alemán en Alemania
  72. date_default_timezone_set('Europe/Berlin');
  73. ]]></programlisting>
  74. </example>
  75. <emphasis>¡Al crear instancias de Zend_Date, su zona horaria se convertirá automáticamente
  76. en la zona horaria por defecto actual!</emphasis> De esta forma, la configuración de zona horaria tendrá
  77. en cuenta cualquier cambio de hora de invierno/verano (Daylight Saving Time, DST), eliminando la necesidad
  78. de especificarlo explícitamente.
  79. </para>
  80. <para>
  81. Tenga en cuenta que las zonas horarias <emphasis>UTC</emphasis> y
  82. <emphasis>GMT</emphasis> no incluyen el cambio de hora de invierno/verano (Daylight Saving Time, DST).
  83. Esto significa que aunque defina a mano que <classname>Zend_Date</classname> deba trabajar con DST, podría
  84. ser anulado por las instancias de <classname>Zend_Date</classname> que han sido fijadas a
  85. UTC o GMT.
  86. </para>
  87. </sect2>
  88. <sect2 id="zend.date.why">
  89. <title>¿Por Qué Usar Zend_Date?</title>
  90. <para>
  91. <classname>Zend_Date</classname> ofrece las siguientes prestaciones, las cuales extienden el alcance de las funciones de fecha de PHP:
  92. </para>
  93. <itemizedlist mark="opencircle">
  94. <listitem>
  95. <para>
  96. API sencilla
  97. </para>
  98. <para>
  99. <classname>Zend_Date</classname> aporta una API muy sencilla, que combina lo mejor de la funcionalidad
  100. fecha/hora de cuatro lenguajes de programación. Es posible, por ejemplo, añadir o comparar dos horas
  101. dentro de una misma columna.
  102. </para>
  103. </listitem>
  104. <listitem>
  105. <para>
  106. Completamente internacionalizado
  107. </para>
  108. <para>
  109. Todos los nombres de meses y días de la semana completos y abreviados están incluidos para más de 130 idiomas.
  110. Los métodos admiten tanto entrada como salida de fechas usando los nombres localizados de meses y días de la semana.
  111. </para>
  112. </listitem>
  113. <listitem>
  114. <para>
  115. Timestamps ilimitados
  116. </para>
  117. <para>
  118. A pesar de que la documentación de PHP 5.2 indice: "El intervalo de valores admitidos de timestamps es
  119. desde el 13 Dec 1901 20:45:54 GMT al 19 Ene 2038 03:14:07 GMT," <classname>Zend_Date</classname> admite un rango
  120. casi ilimitado, con la ayuda de la extensión BCMath. Si BCMath no está disponible, Zend_Date tendrá una
  121. funcionalidad de timestamps reducida al rango del tipo <methodname>float</methodname> soportado por su servidor.
  122. El tamaño de un float es dependiente de la plataforma, aunque un máximo de ~1.8e308 con una precisión
  123. de cerca de 14 dígitos decimales es un valor habitual (formato 64 bit IEEE)." [
  124. <ulink url="http://www.php.net/float">http://www.php.net/float</ulink>
  125. ]. Adicionalmente, las limitaciones heredadas de los tipos de dato float, y errores de redondeo de números
  126. flotantes pueden introducir errores en los cálculos. Para evitar estos problemas, los componentes ZF I18n
  127. usan la extensión BCMath, si está disponible.
  128. </para>
  129. </listitem>
  130. <listitem>
  131. <para>
  132. Soporte para especificaciones de fecha ISO_8601
  133. </para>
  134. <para>
  135. Las especificaciones de fecha ISO_8601 están aceptadas. Incluso las especificaciones de fecha ISO_8601
  136. parcialmente autorizadas serán identificadas. Estos formatos de fecha son particularmente útiles al
  137. trabajar con bases de datos. Por ejemplo, aunque MsSQL y
  138. <ulink url="http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html">MySQL</ulink>
  139. difieren ligeramente uno de otro, ambos tienen soporte por parte de <classname>Zend_Date</classname> usando la constante
  140. de especificación de formato
  141. <link linkend="zend.date.constants.list">Zend_Date::ISO_8601</link>.
  142. Cuando las cadenas de fecha sean del tipo "Y/m/d" o "Y-m-d H:i:s", de acuerdo con los tokens de formato
  143. PHP date(), use el soporte integrado de Zend_Date para fechas formateadas ISO 8601.
  144. </para>
  145. </listitem>
  146. <listitem>
  147. <para>
  148. Calcular amanecer y puesta de sol
  149. </para>
  150. <para>
  151. 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
  152. para trabajar en su proyecto PHP favorito :)
  153. </para>
  154. </listitem>
  155. </itemizedlist>
  156. </sect2>
  157. </sect1>
  158. <!--
  159. vim:se ts=4 sw=4 et:
  160. -->