Zend_Date-Creation.xml 8.8 KB

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