Zend_Date-Introduction.xml 8.4 KB

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