| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- EN-Revision: 15851 -->
- <!-- Reviewed: no -->
- <sect1 id="zend.date.introduction">
- <title>Einführung</title>
- <para>
- Die <classname>Zend_Date</classname> Komponente bietet eine umfangreiche aber einfache API
- zur Manipulation von Datum und Zeit. Die Methoden verarbeiten eine große Auswahl von
- Datentypen in vielen Kombinationen und erweitern die vorhandenen PHP 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 DST
- berücksichtigen soll, das automatisch für alle Instanzen von
- <classname>Zend_Date</classname> zurückgeschaltet wird die auf UTC oder GMT 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 PHP Datumsfunktionen um
- folgende Features:
- </para>
- <itemizedlist mark='opencircle'>
- <listitem>
- <para>
- Einfache API
- </para>
- <para>
- <classname>Zend_Date</classname> bietet eine sehr einfache API, 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 PHP 5.2 Dokumentation erklärt: "Die gültige Spanne eines Zeitpunktes
- geht von Fr, 13. Dez 1901 20:45:54 GMT bis Di, 19. Jan 2038 03:14:07 GMT",
- ermöglicht <classname>Zend_Date</classname> mit Unterstützung der BCMath
- Erweiterung eine fast unbegrenzte Zeitspanne. Wenn BCMath nicht verfügbar ist,
- bietet Zend_Date 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 ZF 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 PHP date() Formaten "Y/m/d"
- oder "Y-m-d H:i:s" übereinstimmen, sollte die in Zend_Date eingebaute
- Unterstützung für ISO 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-PHP Projekt verpasset
- werden muß :)
- </para>
- </listitem>
- </itemizedlist>
- </sect2>
- </sect1>
|