Zend_Date-Introduction.xml 8.1 KB

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