Einführung
Die Zend_Date 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 aktuelle
Version der Dokumentation kann in unserer Online Dokumentation
(regelmäßig mit SVN synchronisiert) gefunden werden.
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
Zend_Locale
nachgelesen werden.
Zend_Date unterstützt auch abgekürzte Monatsnamen in vielen Sprachen.
Zend_Locale erleichert die Normalisierung von lokalisierten
Monatsnamen und Wochentagen zu Zeitpunkten, die umgekehrt auch wieder lokalisiert für andere
Regionen übersetzt werden können.
Immer eine Standardzeitzone definieren
Bevor beliebige datumsrelevante Funktionen in PHP 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 date.timezone
Einstellung in der php.ini oder durch die Funktion date_default_timezone_set()
durchgeführt werden. Durch das Setzen einer Standardzeitzone 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
CLDR Zeitzonen Liste ( Englisch ) gefunden werden.
Definieren einer StandardzeitzoneWenn eine Zend_Date Instanz erzeugt wird, wird die
Zeitzone des aktuellen Benutzers automatisch als aktuelle Standardzeitzone
übernommen. Deshalb wird die Einstellung der Zeitzone für jede Zeitumstellung
(DST) berücksichtigt und erspart effektiv das explizite Setzen der
Sommer-/Winterzeitumstellung (DST).
Es gilt zu beachten, dass die Zeitzonen UTC und
GMT keine Sommer-/Winterzeitumstellung
enthalten. Das bedeutet, dass selbst wenn per Hand definiert wurde, dass
Zend_Date die DST berücksichtigen soll, das
automatisch für alle Instanzen von Zend_Date zurückgeschaltet
wird, die auf UTC oder GMT eingestellt wurden.
Warum soll Zend_Date verwendet werden ?Zend_Date erweitert die Möglichkeiten der PHP
Datumsfunktionen um folgende Features:
Einfache API
Zend_Date 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.
Vollständig internationalisiert
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.
Unlimitierte Zeitpunkte
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
Zend_Date mit Unterstützung der BCMath Erweiterung eine
fast unbegrenzte Zeitspanne. Wenn BCMath nicht verfügbar ist, bietet
Zend_Date eine Spanne innerhalb des float
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)." [http://www.php.net/float]. 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.
Unterstützung der ISO-8601 Datumsspezifikation
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 MySQL
leicht unterschiedlich mit Datum und Zeit umgehen, werden beide von
Zend_Date unterstützt, wenn die Zend_Date::ISO_8601 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.
Sonnenauf- und Untergang errechnen
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 verpasst werden muß :)