Zend_Date-Introduction.xml 9.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 24249 -->
  3. <!-- Reviewed: 17986 -->
  4. <sect1 id="zend.date.introduction">
  5. <title>Einführung</title>
  6. <para>
  7. Die <classname>Zend_Date</classname> Komponente bietet eine umfangreiche aber einfache
  8. <acronym>API</acronym> zur Manipulation von Datum und Zeit. Die Methoden verarbeiten eine
  9. große Auswahl von Datentypen in vielen Kombinationen und erweitern die vorhandenen
  10. <acronym>PHP</acronym> Datumsfunktionen um eine Vielzahl von Möglichkeiten. Die aktuelle
  11. Version der Dokumentation kann in unserer <ulink
  12. url="http://framework.zend.com/wiki/display/ZFDOCDEV/Home">Online Dokumentation
  13. (regelmäßig mit SVN synchronisiert)</ulink> gefunden werden.
  14. </para>
  15. <para>
  16. Auch wenn Einfachheit das höchste Ziel bleibt, ist die Arbeit beim Umgang mit lokalisierten
  17. Datums- und Zeitangaben unweigerlich mit einer gewissen Komplexität verbunden. Daten als
  18. auch Zeitangaben werden in verschiedenen Datums- und Zeitzonen oft unterschiedlich
  19. dargestellt. Beispielsweise stellen manche die Monatsangabe voran, während andere das Jahr
  20. an erste Stelle schreiben um ein Kalenderdatum darzustellen. Für weiterführende
  21. Informationen über die Handhabung von Lokalisierung und Normalisierung kann im Abschnitt
  22. <link linkend="zend.locale.date.datesandtimes"><classname>Zend_Locale</classname></link>
  23. nachgelesen werden.
  24. </para>
  25. <para>
  26. <classname>Zend_Date</classname> unterstützt auch abgekürzte Monatsnamen in vielen Sprachen.
  27. <classname>Zend_Locale</classname> erleichert die Normalisierung von lokalisierten
  28. Monatsnamen und Wochentagen zu Zeitpunkten, die umgekehrt auch wieder lokalisiert für andere
  29. Regionen übersetzt werden können.
  30. </para>
  31. <sect2 id="zend.date.setdefaulttimezone">
  32. <title>Immer eine Standardzeitzone definieren</title>
  33. <para>
  34. Bevor beliebige datumsrelevante Funktionen in <acronym>PHP</acronym> oder dem Zend
  35. Framework verwendet werden können, sollten sichergestellt werden, dass die
  36. Standardzeitzone in der Anwendung korrekt definiert wurde. Das kann wahlweise mit dem
  37. Definieren einer TZ Umgebungsvariablen, der <property>date.timezone</property>
  38. Einstellung in der <filename>php.ini</filename> oder durch die Funktion <ulink
  39. url="http://php.net/date_default_timezone_set">date_default_timezone_set()</ulink>
  40. durchgeführt werden. Durch das Setzen einer Standardzeitzone können in
  41. <acronym>PHP</acronym> können alle datums- und zeitabhängigen Funktionen für einen
  42. bestimmten Benutzer angepasst werden. Eine vollständige Auflistung der
  43. Zeitzoneneinstellungen kann in der <ulink
  44. url="http://unicode.org/cldr/data/diff/supplemental/territory_containment_un_m_49.html">
  45. CLDR Zeitzonen Liste</ulink> ( Englisch ) gefunden werden.
  46. </para>
  47. <example id="zend.date.setdefaulttimezone.example-1">
  48. <title>Definieren einer Standardzeitzone</title>
  49. <programlisting language="php"><![CDATA[
  50. // Zeitzone für die USA, Kalifornien
  51. date_default_timezone_set('America/Los_Angeles');
  52. // Zeitzone für Deutschland
  53. date_default_timezone_set('Europe/Berlin');
  54. ]]></programlisting>
  55. </example>
  56. <para>
  57. <emphasis>Wenn eine <classname>Zend_Date</classname> Instanz erzeugt wird, wird die
  58. Zeitzone des aktuellen Benutzers automatisch als aktuelle Standardzeitzone
  59. übernommen</emphasis>. Deshalb wird die Einstellung der Zeitzone für jede Zeitumstellung
  60. (<acronym>DST</acronym>) berücksichtigt und erspart effektiv das explizite Setzen der
  61. Sommer-/Winterzeitumstellung (<acronym>DST</acronym>).
  62. </para>
  63. <para>
  64. Es gilt zu beachten, dass die Zeitzonen <emphasis><acronym>UTC</acronym></emphasis> und
  65. <emphasis><acronym>GMT</acronym></emphasis> keine Sommer-/Winterzeitumstellung
  66. enthalten. Das bedeutet, dass selbst wenn per Hand definiert wurde, dass
  67. <classname>Zend_Date</classname> die <acronym>DST</acronym> berücksichtigen soll, das
  68. automatisch für alle Instanzen von <classname>Zend_Date</classname> zurückgeschaltet
  69. wird, die auf <acronym>UTC</acronym> oder <acronym>GMT</acronym> eingestellt wurden.
  70. </para>
  71. </sect2>
  72. <sect2 id="zend.date.why">
  73. <title>Warum soll Zend_Date verwendet werden ?</title>
  74. <para>
  75. <classname>Zend_Date</classname> erweitert die Möglichkeiten der <acronym>PHP</acronym>
  76. Datumsfunktionen um folgende Features:
  77. </para>
  78. <itemizedlist mark='opencircle'>
  79. <listitem>
  80. <para>
  81. Einfache <acronym>API</acronym>
  82. </para>
  83. <para>
  84. <classname>Zend_Date</classname> bietet eine sehr einfache
  85. <acronym>API</acronym>, welche die besten Datums- und Zeitfunktionen aus vier
  86. Programmiersprachen vereint. Beispielsweise ist es möglich, in nur einer Zeile
  87. zwei Zeiten miteinander zu vergleichen oder zu addieren.
  88. </para>
  89. </listitem>
  90. <listitem>
  91. <para>
  92. Vollständig internationalisiert
  93. </para>
  94. <para>
  95. Alle vollen und abgekürzten Monatsnamen und Wochentage aus mehr als 130 Sprachen
  96. werden unterstützt. Die Methoden ermöglichen die Ein- und Ausgabe von Daten im
  97. Format des jeweiligen Gebietsschemas.
  98. </para>
  99. </listitem>
  100. <listitem>
  101. <para>
  102. Unlimitierte Zeitpunkte
  103. </para>
  104. <para>
  105. Obwohl die <acronym>PHP</acronym> 5.2 Dokumentation erklärt: "Die gültige Spanne
  106. eines Zeitpunktes geht von Fr, 13. Dez 1901 20:45:54 <acronym>GMT</acronym> bis
  107. Di, 19. Jan 2038 03:14:07 <acronym>GMT</acronym>", ermöglicht
  108. <classname>Zend_Date</classname> mit Unterstützung der BCMath Erweiterung eine
  109. fast unbegrenzte Zeitspanne. Wenn BCMath nicht verfügbar ist, bietet
  110. <classname>Zend_Date</classname> eine Spanne innerhalb des float
  111. Datentyps des verwendeten Servers. "Die Größe von float ist Plattformabhängig,
  112. allerdings ist das Maximum von <command>~1.8e308</command> mit einer Genauigkeit
  113. von ca. 14 Dezimalstellen ein Standardwert. (das 64 bit <acronym>IEEE</acronym>
  114. Format)." [<ulink
  115. url="http://www.php.net/float">http://www.php.net/float</ulink>]. Zusätzlich
  116. können inhärente Beschränkungen der Float-Datentypen sowie Rundungsfehler von
  117. Fließkommazahlen Berechnungsfehler verursachen. Um diese Probleme zu vermeiden,
  118. verwenden die I18n-Komponenten des Zend Frameworks die BCMath Extension, wenn
  119. verfügbar.
  120. </para>
  121. </listitem>
  122. <listitem>
  123. <para>
  124. Unterstützung der <acronym>ISO-8601</acronym> Datumsspezifikation
  125. </para>
  126. <para>
  127. Die <acronym>ISO-8601</acronym> Datumsspezifikationen werden unterstützt. Sogar
  128. teilkonforme <acronym>ISO-8601</acronym> Datumsspezifikationen werden erkannt.
  129. Diese Zeitformate sind vor allem bei der Arbeit mit Datenbanken sinnvoll. Selbst
  130. wenn zum Beispiel MsSQL und <ulink
  131. url="http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html">MySQL</ulink>
  132. leicht unterschiedlich mit Datum und Zeit umgehen, werden beide von
  133. <classname>Zend_Date</classname> unterstützt, wenn die <link
  134. linkend="zend.date.constants.list">Zend_Date::ISO_8601</link> Format
  135. Konstante verwendet wird. Wenn Datumszeichen mit den <acronym>PHP</acronym>
  136. <methodname>date()</methodname> Formaten "<command>Y/m/d</command>" oder
  137. "<command>Y-m-d H:i:s</command>" übereinstimmen, sollte die in
  138. <classname>Zend_Date</classname> eingebaute Unterstützung für
  139. <acronym>ISO-8601</acronym> formatierte Daten verwendet werden.
  140. </para>
  141. </listitem>
  142. <listitem>
  143. <para>
  144. Sonnenauf- und Untergang errechnen
  145. </para>
  146. <para>
  147. Sonnenauf-und Untergang können für jeden beliebigen Ort und Tag anzeigen werden,
  148. so dass keine einzige Sekunde Tageslicht für das
  149. Lieblings-<acronym>PHP</acronym>-Projekt verpasst werden muß :)
  150. </para>
  151. </listitem>
  152. </itemizedlist>
  153. </sect2>
  154. </sect1>