Zend_Date-Introduction.xml 8.6 KB

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