Zend_Date-Introduction.xml 8.2 KB

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