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 aktuellste Version der Dokumentation kann in unserer
Online Dokumentation
( regelmäßig mit SVN syncronisiert ) 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 Standard-Zeitzone definieren
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 date.timezone Einstellung in der php.ini oder durch
die Funktion date_default_timezone_set()
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
CLDR Zeitzonen Liste ( Englisch ) gefunden werden.
Definieren einer Standard-ZeitzoneWenn eine Zend_Date Instanz erzeugt wird, wird die Zeitzone des aktuellen
Benutzers automatisch als aktuelle Standardzeitzone übernommen.
Das erspart das explizite setzen der Sommer-/Winterzeitumstellung (DST).
Es gilt zu beachten das die Zeitzonen UTC und
GMT keine Sommer-/Winterzeitumstellung enthalten. Das bedeutet
das selbst wenn per Hand definiert wurde das 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 ZF I18n Komponenten die BCMatch 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 verpasset
werden muß :)