Zend_Date-Creation.xml 8.4 KB

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