Zend_Date-Creation.xml 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <!-- EN-Revision: 24249 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.date.creation">
  5. <title>Créer des dates</title>
  6. <para>
  7. <classname>Zend_Date</classname> permet de créer des instances d'elle même de
  8. plusieurs manières différentes. Nous allons voir ceci.
  9. </para>
  10. <sect2 id="zend.date.creation.actual">
  11. <title>Créer la date actuelle</title>
  12. <para>
  13. La manière la plus simple de créer la date actuelle est d'utiliser le
  14. constructeur <code>new Zend_Date()</code> ou encore la méthode statique
  15. <methodname>Zend_Date::now()</methodname>. Toutes les deux retournent une instance de
  16. <classname>Zend_Date</classname> avec la date actuelle. Elle est représentée par une
  17. date calendaire et un temps pour le fuseau horaire actuel du serveur.
  18. </para>
  19. <example id="zend.date.creation.actual.example-1">
  20. <title>Créer une date par instance</title>
  21. <para>
  22. Il n'y a pas de paramètres à passer au constructeur pour récupérer un objet
  23. <classname>Zend_Date</classname>. Certains paramètres sont cependant disponibles et
  24. nous y reviendrons.
  25. </para>
  26. <programlisting language="php"><![CDATA[
  27. $date = new Zend_Date();
  28. ]]></programlisting>
  29. </example>
  30. <example id="zend.date.creation.actual.example-2">
  31. <title>Créer une date par méthode statique</title>
  32. <para>
  33. La méthode statique <methodname>now()</methodname> a exactement le même effet qu'un
  34. passage par le constructeur. Cependant la méthode statique, elle, ne peut pas
  35. prendre de paramètres additionnels.
  36. </para>
  37. <programlisting language="php"><![CDATA[
  38. $date = Zend_Date::now();
  39. ]]></programlisting>
  40. </example>
  41. </sect2>
  42. <sect2 id="zend.date.creation.database">
  43. <title>Créer une date depuis une base de données</title>
  44. <para>
  45. Les bases de données sont souvent utilisées pour stocker des informations de
  46. dates. Mais elles ont toutes une implémentation et une représentation qui leur est
  47. propre. MSSQL par exemple manipule les dates de manières significativement différente
  48. de MySQL, par exemple. Heureusement, <classname>Zend_Date</classname> aide à simplifier
  49. le processus de création d'une date depuis une base de données.
  50. </para>
  51. <para>
  52. Il est possible de demander au serveur de base de données de formater la date
  53. dans un certain format. Mais ceci reste en général assez lourd, et doit être pensé à
  54. chaque fois.
  55. </para>
  56. <para>
  57. Nous avons donc des méthodes très pratiques et rapides dans
  58. <classname>Zend_Date</classname>, pour récupérer les dates depuis une base de
  59. données.
  60. </para>
  61. <example id="zend.date.creation.database.example-1">
  62. <title>Création d'une date depuis une base de données</title>
  63. <para>
  64. Toutes les bases de données doivent répondre extrêmement rapidement à leurs
  65. requêtes. Pour stocker une date de manière optimale dans une base, il faut utiliser
  66. un timestamp. En interne, tous les SGBDs représentent les dates sous forme de
  67. timestamp (non Unix). Ainsi, leur demander un timestamp sera toujours plus
  68. performant que de leur demander une date dans un format précis.
  69. </para>
  70. <programlisting language="php"><![CDATA[
  71. // SELECT UNIX_TIMESTAMP(my_datetime_column) FROM my_table
  72. $date = new Zend_Date($unixtimestamp, Zend_Date::TIMESTAMP);
  73. ]]></programlisting>
  74. </example>
  75. <example id="zend.date.creation.database.example-2">
  76. <title>Création d'une date depuis une base de données dans un format</title>
  77. <para>
  78. La sortie de chaque base de données est différente même si elles se
  79. ressemblent. Cependant elles ont toutes des formats compatibles <constant>ISO</constant>.
  80. La manière la plus simple de créer une date depuis une base de données est
  81. d'utiliser <classname>Zend_Date::ISO_8601</classname>. Les SGBDs connus pour être
  82. conformes pour <classname>Zend_Date::ISO_8601</classname> sont MySQL, MSSQL par
  83. exemple, mais ils sont tous capables de retourner une représentation
  84. <constant>ISO8601</constant> d'une donnée date. <constant>ISO8601</constant> possède l'avantage
  85. d'être lisible et compréhensible par un humain. Son inconvénient est qu'il est
  86. légèrement plus lourd à traiter qu'un simple timestamp UNIX. En revanche ceux-ci ne
  87. supportent pas les dates inférieures au 1er Janvier 1970.
  88. </para>
  89. <programlisting language="php"><![CDATA[
  90. // SELECT datecolumn FROM my_table
  91. $date = new Zend_Date($datecolumn, Zend_Date::ISO_8601);
  92. ]]></programlisting>
  93. </example>
  94. </sect2>
  95. <sect2 id="zend.date.creation.array">
  96. <title>Créer des dates depuis un tableau</title>
  97. <para>
  98. Créer une date depuis un tableau est fréquent et pratique. Les clés du tableau
  99. sont&#160;:
  100. </para>
  101. <para>
  102. <itemizedlist mark="opencircle">
  103. <listitem>
  104. <para><emphasis>day</emphasis>&#160;: jour de la date, un
  105. nombre
  106. </para>
  107. </listitem>
  108. <listitem>
  109. <para>
  110. <emphasis>month</emphasis>&#160;: mois de la date, un
  111. nombre
  112. </para>
  113. </listitem>
  114. <listitem>
  115. <para>
  116. <emphasis>year</emphasis>&#160;: année complète de la
  117. date
  118. </para>
  119. </listitem>
  120. <listitem>
  121. <para><emphasis>hour</emphasis>&#160;: heures de la date</para>
  122. </listitem>
  123. <listitem>
  124. <para><emphasis>minute</emphasis>&#160;: minutes de la date</para>
  125. </listitem>
  126. <listitem>
  127. <para><emphasis>second</emphasis>&#160;: secondes de la date</para>
  128. </listitem>
  129. </itemizedlist>
  130. </para>
  131. <example id="zend.date.creation.array.example">
  132. <title>Créer une date depuis un tableau</title>
  133. <para>
  134. En temps normal on utilisera un tableau avec toutes ses clés. Si une clé est
  135. absente, la valeur qu'elle représente sera mise à la valeur zéro par défaut. Par
  136. exemple une tableau ne comportant pas la clé "<code>hour</code>", donnera naissance
  137. à une date ayant une partie heures à la valeur "<emphasis>0</emphasis>".
  138. </para>
  139. <programlisting language="php"><![CDATA[
  140. $datearray = array('year' => 2006,
  141. 'month' => 4,
  142. 'day' => 18,
  143. 'hour' => 12,
  144. 'minute' => 3,
  145. 'second' => 10);
  146. $date = new Zend_Date($datearray);
  147. ]]></programlisting>
  148. <programlisting language="php"><![CDATA[
  149. $datearray = array('year' => 2006, 'month' => 4, 'day' => 18);
  150. $date = new Zend_Date($datearray);
  151. ]]></programlisting>
  152. </example>
  153. </sect2>
  154. </sect1>