| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- EN-Revision: 17600 -->
- <!-- 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 <code>date.timezone</code> Einstellung in der php.ini 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.
- <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>
- <emphasis>Wenn eine Zend_Date 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 ~1.8e308 mit einer Genauigkeit von ca. 14
- Dezimalstellen ein Standardwert. (das 64 bit IEEE 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 ISO_8601 Datumsspezifikation
- </para>
- <para>
- Die ISO_8601 Datumsspezifikationen werden unterstützt. Sogar
- teilkonforme ISO_8601 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 "Y/m/d" oder "Y-m-d H:i:s" ü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>
|