| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- EN-Revision: 17910 -->
- <!-- Reviewed: no -->
- <sect1 id="zend.date.introduction">
- <title>Einführung</title>
- <para>
- Die <classname>Zend_Date</classname> Komponente bietet eine umfangreiche aber einfache
- <acronym>API</acronym> zur Manipulation von Datum und Zeit. Die Methoden verarbeiten eine
- große Auswahl von Datentypen in vielen Kombinationen und erweitern die vorhandenen
- <acronym>PHP</acronym> Datumsfunktionen um eine Vielzahl von Möglichkeiten. Die aktuellste
- Version der Dokumentation kann in unserer <ulink
- url="http://framework.zend.com/wiki/display/ZFDOCDEV/Home">Online Dokumentation
- (regelmäßig mit SVN syncronisiert)</ulink> gefunden werden.
- </para>
- <para>
- Auch wenn Einfachheit das höchste Ziel bleibt, ist die Arbeit beim Umgang mit lokalisierten
- Datums- und Zeitangaben unweigerlich mit einer gewissen Komplexität verbunden. Daten als
- auch Zeitangaben werden in verschiedenen Datums- und Zeitzonen oft unterschiedlich
- dargestellt. Beispielsweise stellen manche die Monatsangabe voran, während andere das Jahr
- an erste Stelle schreiben um ein Kalenderdatum darzustellen. Für weiterführende
- Informationen über die Handhabung von Lokalisierung und Normalisierung kann im Abschnitt
- <link linkend="zend.locale.date.datesandtimes"><classname>Zend_Locale</classname></link>
- nachgelesen werden.
- </para>
- <para>
- <classname>Zend_Date</classname> unterstützt auch abgekürzte Monatsnamen in vielen Sprachen.
- <classname>Zend_Locale</classname> erleichert die Normalisierung von lokalisierten
- Monatsnamen und Wochentagen zu Zeitpunkten die umgekehrt auch wieder lokalisiert für andere
- Regionen übersetzt werden können.
- </para>
- <sect2 id="zend.date.setdefaulttimezone">
- <title>Immer eine Standard-Zeitzone definieren</title>
- <para>
- Bevor beliebige datumsrelevante Funktionen in PHP oder dem Zend Framework verwendet
- werden können, sollten sichergestellt werden, dass die Standard-Zeitzone in der
- Anwendung korrekt definiert wurde. Das kann wahlweise mit dem Definieren einer TZ
- Umgebungsvariablen, der <property>date.timezone</property> Einstellung in der
- <filename>php.ini</filename> oder durch die Funktion <ulink
- url="http://php.net/date_default_timezone_set">date_default_timezone_set()</ulink>
- durchgeführt werden.
- Durch das Setzen einer Standard-Zeitzone können in PHP können alle datums- und
- zeitabhängigen Funktionen für einen bestimmten Benutzer angepasst werden. Eine
- vollständige Auflistung der Zeitzoneneinstellungen kann in der <ulink
- url="http://unicode.org/cldr/data/diff/supplemental/territory_containment_un_m_49.html">
- CLDR Zeitzonen Liste</ulink> ( Englisch ) gefunden werden.
- </para>
- <example id="zend.date.setdefaulttimezone.example-1">
- <title>Definieren einer Standard-Zeitzone</title>
- <programlisting language="php"><![CDATA[
- // Zeitzone für die USA, Kalifornien
- date_default_timezone_set('America/Los_Angeles');
- // Zeitzone für Deutschland
- date_default_timezone_set('Europe/Berlin');
- ]]></programlisting>
- </example>
- <para>
- <emphasis>Wenn eine <classname>Zend_Date</classname> Instanz erzeugt wird, wird die
- Zeitzone des aktuellen Benutzers automatisch als aktuelle Standardzeitzone
- übernommen</emphasis>. Das erspart das explizite setzen der
- Sommer-/Winterzeitumstellung (DST).
- </para>
- <para>
- Es gilt zu beachten das die Zeitzonen <emphasis>UTC</emphasis> und
- <emphasis>GMT</emphasis> keine Sommer-/Winterzeitumstellung enthalten. Das bedeutet
- das selbst wenn per Hand definiert wurde das <classname>Zend_Date</classname> die
- <acronym>DST</acronym> berücksichtigen soll, das automatisch für alle Instanzen von
- <classname>Zend_Date</classname> zurückgeschaltet wird die auf <acronym>UTC</acronym>
- oder <acronym>GMT</acronym> eingestellt wurden.
- </para>
- </sect2>
- <sect2 id="zend.date.why">
- <title>Warum soll Zend_Date verwendet werden ?</title>
- <para>
- <classname>Zend_Date</classname> erweitert die Möglichkeiten der <acronym>PHP</acronym>
- Datumsfunktionen um folgende Features:
- </para>
- <itemizedlist mark='opencircle'>
- <listitem>
- <para>
- Einfache <acronym>API</acronym>
- </para>
- <para>
- <classname>Zend_Date</classname> bietet eine sehr einfache
- <acronym>API</acronym>, welche die besten Datums- und Zeitfunktionen aus vier
- Programmiersprachen vereint. Beispielsweise ist es möglich, in nur einer Zeile
- zwei Zeiten miteinander zu vergleichen oder zu addieren.
- </para>
- </listitem>
- <listitem>
- <para>
- Vollständig Internationalisiert
- </para>
- <para>
- Alle vollen und abgekürzten Monatsnamen und Wochentage aus mehr als 130 Sprachen
- werden unterstützt. Die Methoden ermöglichen die Ein- und Ausgabe von Daten im
- Format des jeweiligen Gebietsschemas.
- </para>
- </listitem>
- <listitem>
- <para>
- Unlimitierte Zeitpunkte
- </para>
- <para>
- Obwohl die <acronym>PHP</acronym> 5.2 Dokumentation erklärt: "Die gültige Spanne
- eines Zeitpunktes geht von Fr, 13. Dez 1901 20:45:54 <acronym>GMT</acronym> bis
- Di, 19. Jan 2038 03:14:07 <acronym>GMT</acronym>", ermöglicht
- <classname>Zend_Date</classname> mit Unterstützung der BCMath Erweiterung eine
- fast unbegrenzte Zeitspanne. Wenn BCMath nicht verfügbar ist, bietet
- <classname>Zend_Date</classname> eine Spanne innerhalb des <code>float</code>
- Datentyps des verwendeten Servers. "Die Größe von float ist Plattformabhängig,
- allerdings ist das Maximum von <command>~1.8e308</command> mit einer Genauigkeit
- von ca. 14 Dezimalstellen ein Standardwert. (das 64 bit <acronym>IEEE</acronym>
- Format)." [<ulink
- url="http://www.php.net/float">http://www.php.net/float</ulink>]. Zusätzlich
- können inhärente Beschränkungen der Float-Datentypen sowie Rundungsfehler von
- Fließkommazahlen Berechnungsfehler verursachen. Um diese Probleme zu vermeiden,
- verwenden die Zend Framework I18n Komponenten die BCMatch Extension, wenn
- verfügbar.
- </para>
- </listitem>
- <listitem>
- <para>
- Unterstützung der <acronym>ISO-8601</acronym> Datumsspezifikation
- </para>
- <para>
- Die <acronym>ISO-8601</acronym> Datumsspezifikationen werden unterstützt. Sogar
- teilkonforme <acronym>ISO-8601</acronym> Datumsspezifikationen werden erkannt.
- Diese Zeitformate sind vor allem bei der Arbeit mit Datenbanken sinnvoll. Selbst
- wenn zum Beispiel MsSQL und <ulink
- url="http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html">MySQL</ulink>
- leicht unterschiedlich mit Datum und Zeit umgehen, werden beide von
- <classname>Zend_Date</classname> unterstützt, wenn die <link
- linkend="zend.date.constants.list">Zend_Date::ISO_8601</link> Format
- Konstante verwendet wird. Wenn Datumszeichen mit den <acronym>PHP</acronym>
- date() Formaten "<command>Y/m/d</command>" oder "<command>Y-m-d H:i:s</command>"
- übereinstimmen, sollte die in <classname>Zend_Date</classname> eingebaute
- Unterstützung für <acronym>ISO</acronym> 8601 formatierte Daten verwendet
- werden.
- </para>
- </listitem>
- <listitem>
- <para>
- Sonnenauf- und Untergang errechnen
- </para>
- <para>
- Sonnenauf-und Untergang können für jeden beliebigen Ort und Tag anzeigen werden,
- so dass keine einzige Sekunde Tageslicht für das Lieblings
- <acronym>PHP</acronym> Projekt verpasst werden muß :)
- </para>
- </listitem>
- </itemizedlist>
- </sect2>
- </sect1>
|