| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- EN-Revision: 24249 -->
- <!-- Reviewed: 17986 -->
- <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 aktuelle
- Version der Dokumentation kann in unserer <ulink
- url="http://framework.zend.com/wiki/display/ZFDOCDEV/Home">Online Dokumentation
- (regelmäßig mit SVN synchronisiert)</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 Standardzeitzone definieren</title>
- <para>
- Bevor beliebige datumsrelevante Funktionen in <acronym>PHP</acronym> oder dem Zend
- Framework verwendet werden können, sollten sichergestellt werden, dass die
- Standardzeitzone 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 Standardzeitzone können in
- <acronym>PHP</acronym> 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 Standardzeitzone</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>. Deshalb wird die Einstellung der Zeitzone für jede Zeitumstellung
- (<acronym>DST</acronym>) berücksichtigt und erspart effektiv das explizite Setzen der
- Sommer-/Winterzeitumstellung (<acronym>DST</acronym>).
- </para>
- <para>
- Es gilt zu beachten, dass die Zeitzonen <emphasis><acronym>UTC</acronym></emphasis> und
- <emphasis><acronym>GMT</acronym></emphasis> keine Sommer-/Winterzeitumstellung
- enthalten. Das bedeutet, dass selbst wenn per Hand definiert wurde, dass
- <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 float
- 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 I18n-Komponenten des Zend Frameworks die BCMath 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>
- <methodname>date()</methodname> 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-8601</acronym> 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>
|