Zend_Date-Creation.xml 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 14978 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.date.creation">
  5. <title>Erstellen von Datumswerten</title>
  6. <para>
  7. <classname>Zend_Date</classname> unterstützt viele verschiedene Wege um eine neue Instanz von sich selbst zu
  8. erstellen. Da es verschiedene Notwendigkeiten gibt, werden die bequemsten Wege in diesem Kapitel
  9. gezeigt.
  10. </para>
  11. <sect2 id="zend.date.creation.actual">
  12. <title>Erstellen des aktuellen Datums</title>
  13. <para>
  14. Der einfachste Weg der Erstellung eines Datumsobjektes ist es ein aktuelles Datum zu erstellen. Man
  15. kann entweder eine neue Instanz mit <emphasis role="strong">new Zend_Date()</emphasis> erstellen, oder
  16. die bequemere statische Methode <emphasis role="strong">Zend_Date::now()</emphasis> verwenden wobei
  17. beide das aktuelle Datum als neue Instanz von <classname>Zend_Date</classname> zurückgeben. Das aktuelle Datum
  18. enthält immer das aktuelle Datum und die Zeit für die aktuell gesetzte Zeitzone.
  19. </para>
  20. <example id="zend.date.creation.actual.example-1">
  21. <title>Datum durch Instanz erstellen</title>
  22. <para>
  23. Datumserstellung durch Erzeugen einer neuen Instanz bedeutet das man keinen Parameter angeben
  24. muß. Natürlich gibt es mehrere Parameter die später beschrieben werden aber normalerweise ist
  25. das der einfachste und meist genutzte Weg um das aktuelle Datum als <classname>Zend_Date</classname>
  26. Instanz zu erhalten.
  27. </para>
  28. <programlisting role="php"><![CDATA[
  29. $date = new Zend_Date();
  30. ]]>
  31. </programlisting>
  32. </example>
  33. <example id="zend.date.creation.actual.example-2">
  34. <title>Statische Erstellung eines Datums</title>
  35. <para>
  36. Machmal ist es einfacher eine statische Methode für die Erstellung eines Datums zu verwenden.
  37. Hierfür kann die <emphasis role="strong"><code>now()</code></emphasis> Methode verwendet werden.
  38. Sie gibt eine neue Instanz von <classname>Zend_Date</classname> auf die gleiche Art und Weise zurück wie
  39. wenn man <code>new Zend_Date()</code> Verwenden würde. Es wird aber immer das aktuelle Datum
  40. zurückgegeben und das kann auch nur durch die Angabe von optionalen Parametern geändert werden.
  41. </para>
  42. <programlisting role="php"><![CDATA[
  43. $date = Zend_Date::now();
  44. ]]>
  45. </programlisting>
  46. </example>
  47. </sect2>
  48. <sect2 id="zend.date.creation.database">
  49. <title>Erstellen von Datumswerten von einer Datenbank</title>
  50. <para>
  51. Datenbanken werden oft verwendet um Datumswerte zu speichern. Aber das Problem ist, das jede Datenbank
  52. Ihre Datumswerte in einem anderen Weg ausgibt. <code>MsSQL</code> Datenbanken verwenden eine etwas
  53. andere Standardausgabe von Datumswerten als <code>MySQL</code> Datenbanken. Aber zur Vereinfachung
  54. macht es <classname>Zend_Date</classname> sehr simpel ein Datum von einem Datumswert einer Datenbank zu erstellen.
  55. </para>
  56. <para>
  57. Natürlich kann jeder Datenbank gesagt werden das Sie die Ausgabe einer definierten Spalte in einen
  58. speziellen Wert konvertiert. Zum Beispiel können ein <code>datetime</code> Wert so konvertiert werden
  59. das ein Minutenwert ausgegeben wird. Aber das benötigt viel Zeit und oft müssen Datumswerte auf eine
  60. andere Art und Weise bearbeitet werden als bei der Erstellung der Datenbankabfrage gedacht wurde.
  61. </para>
  62. <para>
  63. Deswegen gibt es einen schnellen und einen bequemen Weg ein Datum von Datenbankwerten zu erstellen.
  64. </para>
  65. <example id="zend.date.creation.database.example-1">
  66. <title>Schnelle Erstellung eines Datums von Datumswerten einer Datenbank</title>
  67. <para>
  68. Von allen Datenbanken ist bekannt das Sie Abfragen so schnell wie möglich bearbeiten. Sie wurden
  69. erstellt um schnell zu arbeiten und zu antworten. Der Schnellste Weg um Datumswerte zu bearbeiten
  70. ist es aus der Datenbank Unit Timestamps zu erhalten. Alle Datenbanken speichern Datumswerte
  71. intern als Timestamps (nicht Unix Timestamps). Das bedeutet das die Zeit für die Erstellung
  72. eines Timestamps durch eine Abfrage viel kleiner ist als die Konvertierung in ein spezielles
  73. Format.
  74. </para>
  75. <programlisting role="php"><![CDATA[
  76. // SELECT UNIX_TIMESTAMP(my_datetime_column) FROM my_table
  77. $date = new Zend_Date($unixtimestamp, Zend_Date::TIMESTAMP);
  78. ]]>
  79. </programlisting>
  80. </example>
  81. <example id="zend.date.creation.database.example-2">
  82. <title>Bequeme Erstellung eines Datums von Datumswerten einer Datenbank</title>
  83. <para>
  84. Die Standardausgabe von allen Datenbanken ist leicht unterschiedlich selbst wenn
  85. diese auf den ersten Blick gleich ausschauen. Aber alle sind Teil des
  86. <code>ISO</code> Standards und durch Ihn beschrieben. Deshalb liegt der einfachste
  87. Weg ein Datum zu erstellen in der Verwendung von <classname>Zend_Date::ISO_8601</classname>.
  88. Datenbanken von denen bekannt ist das Sie durch <classname>Zend_Date::ISO_8601</classname>
  89. erkannt werden sind zum Beispiel <code>MySQL</code> und <code>MsSQL</code>. Aber
  90. alle Datenbanken können eine <code>ISO 8601</code> Repräsentation von Datumsspalten
  91. ausgeben. <code>ISO 8601</code> hat den großen Vorteil das es menschlich lesbar
  92. ist. Der Nachteil ist das <code>ISO 8601</code> mehr Zeit zur Berechnung benötigt
  93. als ein einfacher Unix Timestamp. Es soll auch erwähnt werden das Unix Timestamps
  94. nur für Datumswerte nach dem 1 Jänner 1970 unterstützt werden.
  95. </para>
  96. <programlisting role="php"><![CDATA[
  97. // SELECT datecolumn FROM my_table
  98. $date = new Zend_Date($datecolumn, Zend_Date::ISO_8601);
  99. ]]>
  100. </programlisting>
  101. </example>
  102. </sect2>
  103. <sect2 id="zend.date.creation.array">
  104. <title>Erstellung eines Datums von einem Array</title>
  105. <para>
  106. Datumswerte können auch durch die Verwendung eines Arrays erstellt werden. Das ist ein einfacher
  107. und leichter Weg. Die verwendeten Array Schlüssel sind:
  108. </para>
  109. <para>
  110. <itemizedlist mark='opencircle'>
  111. <listitem>
  112. <para>
  113. <emphasis role="strong">day</emphasis>: Tag des Datums als Zahl
  114. </para>
  115. </listitem>
  116. <listitem>
  117. <para>
  118. <emphasis role="strong">month</emphasis>: Monat des Datums als Zahl
  119. </para>
  120. </listitem>
  121. <listitem>
  122. <para>
  123. <emphasis role="strong">year</emphasis>: Vollständiges Jahr des Datums
  124. </para>
  125. </listitem>
  126. <listitem>
  127. <para>
  128. <emphasis role="strong">hour</emphasis>: Stunde des Datums
  129. </para>
  130. </listitem>
  131. <listitem>
  132. <para>
  133. <emphasis role="strong">minute</emphasis>: Minute des Datums
  134. </para>
  135. </listitem>
  136. <listitem>
  137. <para>
  138. <emphasis role="strong">second</emphasis>: Sekunde des Datums
  139. </para>
  140. </listitem>
  141. </itemizedlist>
  142. </para>
  143. <example id="zend.date.creation.array.example">
  144. <title>Erstellen eines Datums durch ein Array</title>
  145. <para>
  146. Normalerweise wird ein komplettes Datumsarray für die Erstellung einer neuen Instanz des Datums
  147. angegeben werden. Aber wenn nicht alle Werte angegeben werden, werden die nicht angegebenen
  148. Arraywerte genullt. Das bedeutet das wenn z.B. keine Stunde angegeben wird, die Stunde
  149. <emphasis role="strong">0</emphasis> verwendet wird.
  150. </para>
  151. <programlisting role="php"><![CDATA[
  152. $datearray = array('year' => 2006,
  153. 'month' => 4,
  154. 'day' => 18,
  155. 'hour' => 12,
  156. 'minute' => 3,
  157. 'second' => 10);
  158. $date = new Zend_Date($datearray)
  159. ;]]>
  160. </programlisting>
  161. <programlisting role="php"><![CDATA[
  162. $datearray = array('year' => 2006, 'month' => 4, 'day' => 18);
  163. $date = new Zend_Date($datearray);
  164. ]]>
  165. </programlisting>
  166. </example>
  167. </sect2>
  168. </sect1>