# Konstanten für allgemeine Datumsfunktionen

Überall dort, wo eine Zend_Date-Methode einen Parameter `$parts` aufweist, kann eine der nachfolgenden Konstanten als Argument für diesen Parameter benutzt werden, um einen speziellen Teil des Datums auszuwählen, oder um anzuzeigen, dass ein bestimmtes Datumsformat benutzt werden soll oder gewünscht ist (z.B. RFC 822).

## Konstanten benutzen

Zum Beispiel kann die Konstante `Zend_Date::HOUR` in den unten gezeigten Arten benutzt werden. Wenn mit Wochentagen, Kalendardaten, Stunden, Minuten, Sekunden oder jedem anderen Datumsabschnitt gearbeitet wird, die in verschiedenen Teilen der Welt unterschiedlich dargestellt werden, wird die Zeitzone des Objektes automatisch benutzt, um den richtigen Wert zu berechnen, selbst wenn der interne Zeitpunkt der gleiche ist für den gleichen Moment der Zeit, unabhängig davon, wo auf der Welt sich der Benutzer befindet. Unabhängig von den verwendeten Einheiten muß die Ausgabe entweder als GMT oder UTC ausgedrückt werden oder lokalisiert anhand des Gebietsschemas. Die unten angeführte Beispielausgabe zeigt eine Lokalisierung mit Europe/GMT+1 Stunden (z.B. Österreich, Deutschland, Frankreich).

Berechnungen, die Zend_Date::HOUR beinhalten

Methode | Beschreibung | Original Datum | Ergebnis
--- | --- | --- | ---
get(Zend_Date::HOUR) | Ausgabe der Stunde | 2009-02-13T14:53:27+01:00 | 14
set(12, Zend_Date::HOUR) | Setzen einer neuen Stunde | 2009-02-13T14:53:27+01:00 | 2009-02-13T12:53:27+01:00
add(12, Zend_Date::HOUR) | Stunden hinzufügen | 2009-02-13T14:53:27+01:00 | 2009-02-14T02:53:27+01:00
sub(12, Zend_Date::HOUR) | Stunden entfernen | 2009-02-13T14:53:27+01:00 | 2009-02-13T02:53:27+01:00
compare(12, Zend_Date::HOUR) | Stunden vergleichen, gibt 0, 1 oder -1 zurück | 2009-02-13T14:53:27+01:00 | 1 (wenn Objekt > Argument)
copy(Zend_Date::HOUR) | Kopiert nur den Teil der Stunde | 2009-02-13T14:53:27+01:00 | 1970-01-01T14:00:00+01:00
equals(14, Zend_Date::HOUR) | Stunden vergleichen, gibt `TRUE` oder `FALSE` zurück | 2009-02-13T14:53:27+01:00 | `TRUE`
isEarlier(12, Zend_Date::HOUR) | Vergleicht die Stunde, gibt `TRUE` oder `FALSE` zurück | 2009-02-13T14:53:27+01:00 | `TRUE`
isLater(12, Zend_Date::HOUR) | Vergleicht die Stunde, gibt `TRUE` oder `FALSE` zurück | 2009-02-13T14:53:27+01:00 | `FALSE`

## Liste aller Konstanten

Jeder Teil von Datum oder Zeit hat eine eindeutige Konstante in Zend_Date. Alle durch Zend_Date unterstützten Konstanten sind anbei aufgelistet.

Konstanten für den Tag

Konstante | Beschreibung | Datum | Ergebnis
--- | --- | --- | ---
`Zend_Date::DAY` | Tag (als Zahl, zwei Ziffern) | 2009-02-13T14:53:27+01:00 | 13
`Zend_Date::DAY_SHORT` | Tag (als Zahl, ein oder zwei Ziffern) | 2009-02-13T14:53:27+01:00 | 6
`Zend_Date::WEEKDAY` | Wochentag (Name des Tages, Lokalisiert, Vollständig) | 2009-02-13T14:53:27+01:00 | Freitag
`Zend_Date::WEEKDAY_SHORT` | Wochentag (Name des Tages, Lokalisiert, Abgekürzt, zwei bis vier Zeichen) | 2009-02-06T14:53:27+01:00 | Fre für Freitag
`Zend_Date::WEEKDAY_NAME` | Wochentag (Name des Tages, Lokalisiert, Abgekürzt, ein oder zwei Zeichen) | 2009-02-13T14:53:27+01:00 | Fr für Freitag
`Zend_Date::WEEKDAY_NARROW` | Wochentag (Name des Tages, Lokalisiert, Abgekürzt, ein Zeichen) | 2009-02-13T14:53:27+01:00 | F für Freitag
`Zend_Date::WEEKDAY_DIGIT` | Wochentag (0 = Sonntag, 6 = Samstag) | 2009-02-13T14:53:27+01:00 | 5 für Freitag
`Zend_Date::WEEKDAY_8601` | Wochentag laut ISO 8601 (1 = Montag, 7 = Sonntag) | 2009-02-13T14:53:27+01:00 | 5 für Freitag
`Zend_Date::DAY_OF_YEAR` | Tag (als Zahl, ein oder zwei Ziffern) | 2009-02-13T14:53:27+01:00 | 43
`Zend_Date::DAY_SUFFIX` | Englischer Anhang für den Tag (st, nd, rd, th) | 2009-02-13T14:53:27+01:00 | th

Konstanten für die Woche

Konstante | Beschreibung | Datum | Ergebnis
--- | --- | --- | ---
`Zend_Date::WEEK` | Woche (als Zahl, 1-53) | 2009-02-13T14:53:27+01:00 | 8

Konstanten für das Monat

Konstante | Beschreibung | Datum | Ergebnis
--- | --- | --- | ---
`Zend_Date::MONTH_NAME` | Monat (Name des Monats, Lokalisiert, Vollständig) | 2009-02-13T14:53:27+01:00 | Februar
`Zend_Date::MONTH_NAME_SHORT` | Monat (Name des Monats, Lokalisiert, Abgekürzt, zwei bis vier Zeichen) | 2009-02-13T14:53:27+01:00 | Feb
`Zend_Date::MONTH_NAME_NARROW` | Monat (Name des Monats, Lokalisiert, Abgekürzt, ein oder Zeichen) | 2009-02-13T14:53:27+01:00 | F
`Zend_Date::MONTH` | Monat (Zahl des Monats, zwei Ziffern) | 2009-02-13T14:53:27+01:00 | 02
`Zend_Date::MONTH_SHORT` | Monat (Zahl des Monats, ein oder zwei Ziffern) | 2009-02-13T14:53:27+01:00 | 2
`Zend_Date::MONTH_DAYS` | Anzahl an Tagen für diesen Monat (Zahl) | 2009-02-13T14:53:27+01:00 | 28

Konstanten für das Jahr

Konstante | Beschreibung | Datum | Ergebnis
--- | --- | --- | ---
`Zend_Date::YEAR` | Jahr (Zahl) | 2009-02-13T14:53:27+01:00 | 2009
`Zend_Date::YEAR_8601` | Jahr laut ISO 8601 (Zahl) | 2009-02-13T14:53:27+01:00 | 2009
`Zend_Date::YEAR_SHORT` | Jahr (Zahl, zwei Ziffern) | 2009-02-13T14:53:27+01:00 | 09
`Zend_Date::YEAR_SHORT_8601` | Jahr laut ISO 8601 (Zahl, zwei Ziffern) | 2009-02-13T14:53:27+01:00 | 09
`Zend_Date::LEAPYEAR` | Ist das Jahr ein Schaltjahr? (`TRUE` oder `FALSE`) | 2009-02-13T14:53:27+01:00 | `FALSE`

Konstanten für die Zeit

Konstante | Beschreibung | Datum | Betroffener Teil/Beispiel
--- | --- | --- | ---
`Zend_Date::HOUR` | Stunde (00-23, zwei Ziffern) | 2009-02-13T14:53:27+01:00 | 14
`Zend_Date::HOUR_SHORT` | Stunde (0-23, eine oder zwei Ziffern) | 2009-02-13T14:53:27+01:00 | 14
`Zend_Date::HOUR_SHORT_AM` | Stunde (1-12, eine oder zwei Ziffern) | 2009-02-13T14:53:27+01:00 | 2
`Zend_Date::HOUR_AM` | Stunde (01-12, zwei Ziffern) | 2009-02-13T14:53:27+01:00 | 02
`Zend_Date::MINUTE` | Minute (00-59, zwei Ziffern) | 2009-02-13T14:53:27+01:00 | 53
`Zend_Date::MINUTE_SHORT` | Minute (0-59, eine oder zwei Ziffern) | 2009-02-13T14:03:27+01:00 | 3
`Zend_Date::SECOND` | Sekunde (00-59, zwei Ziffern) | 2009-02-13T14:53:27+01:00 | 27
`Zend_Date::SECOND_SHORT` | Sekunde (0-59, eine oder zwei Ziffern) | 2009-02-13T14:53:07+01:00 | 7
`Zend_Date::MILLISECOND` | Millisekunde (theoretisch unendlich) | `2009-02-06T14:53:27.20546` | 20546
`Zend_Date::MERIDIEM` | Tageszeit (vormittag oder nachmittag) | 2009-02-13T14:53:27+01:00 | nachmittag
`Zend_Date::SWATCH` | Swatch Internet Zeit | 2009-02-13T14:53:27+01:00 | 620

Konstanten für die Zeitzone

Konstante | Beschreibung | Datum | Ergebnis
--- | --- | --- | ---
`Zend_Date::TIMEZONE` | Name der Zeitzone (Zeichenkette, Abgekürzt) | 2009-02-13T14:53:27+01:00 | CET
`Zend_Date::TIMEZONE_NAME` | Name der Zeitzone (Zeichenkette, Vollständig) | 2009-02-13T14:53:27+01:00 | `Europe/Paris`
`Zend_Date::TIMEZONE_SECS` | Differenz der Zeitzone zu GMT in Sekunden (Integer) | 2009-02-13T14:53:27+01:00 | 3600 Sekunden zu GMT
`Zend_Date::GMT_DIFF` | Differenz zu GMT in Sekunden (Zeichenkette) | 2009-02-13T14:53:27+01:00 | +0100
`Zend_Date::GMT_DIFF_SEP` | Differenz zu GMT in Sekunden (Zeichenkette, geteilt) | 2009-02-13T14:53:27+01:00 | +01:00
`Zend_Date::DAYLIGHT` | Sommerzeit oder Winterzeit? (`TRUE` oder `FALSE`) | 2009-02-13T14:53:27+01:00 | `FALSE`

Konstanten für Datumsformate (Formate beinhalten die Zeitzone)

Konstante | Beschreibung | Datum | Ergebnis
--- | --- | --- | ---
`Zend_Date::ISO_8601` | Datum laut ISO 8601 (Zeichenkette, Vollständig) | 2009-02-13T14:53:27+01:00 | 2009-02-13T14:53:27+01:00
`Zend_Date::RFC_2822` | Datum laut RFC 2822 (Zeichenkette) | 2009-02-13T14:53:27+01:00 | Fri, 13 Feb 2009 14:53:27 +0100
`Zend_Date::TIMESTAMP` | Unix Zeit (Sekunden seit 1.1.1970, gemischt) | 2009-02-13T14:53:27+01:00 | 1234533207
`Zend_Date::ATOM` | Datum laut ATOM (Zeichenkette) | 2009-02-13T14:53:27+01:00 | 2009-02-13T14:53:27+01:00
`Zend_Date::COOKIE` | Datum für Cookies (Zeichenkette, für Cookies) | 2009-02-13T14:53:27+01:00 | `Friday, 13-Feb-09 14:53:27 Europe/Paris`
`Zend_Date::RFC_822` | Datum laut RFC 822 (Zeichenkette) | 2009-02-13T14:53:27+01:00 | Fri, 13 Feb 09 14:53:27 +0100
`Zend_Date::RFC_850` | Datum laut RFC 850 (Zeichenkette) | 2009-02-13T14:53:27+01:00 | `Friday, 13-Feb-09 14:53:27 Europe/Paris`
`Zend_Date::RFC_1036` | Datum laut RFC 1036 (Zeichenkette) | 2009-02-13T14:53:27+01:00 | Fri, 13 Feb 09 14:53:27 +0100
`Zend_Date::RFC_1123` | Datum laut RFC 1123 (Zeichenkette) | 2009-02-13T14:53:27+01:00 | Fri, 13 Feb 2009 14:53:27 +0100
`Zend_Date::RSS` | Datum für RSS Feeds (Zeichenkette) | 2009-02-13T14:53:27+01:00 | Fri, 13 Feb 2009 14:53:27 +0100
`Zend_Date::W3C` | Datum für HTML oder HTTP laut W3C (Zeichenkette) | 2009-02-13T14:53:27+01:00 | 2009-02-13T14:53:27+01:00

Beachten Sie vor allem `Zend_Date::DATES`, da dieser Formatbezeichner eine besondere Eigenschaft als Eingabe-Formatbezeichner von Zend_Date hat. Wenn dieser Bezeichner als Eingabeformat für `$part` benutzt wird, erlaubt diese Konstante die beste und flexibelste Art, um viele ähnliche Datumsformate zu akzeptieren. Heuristik wird benutzt, um Daten automatisch von einer Eingabe-Zeichenkette zu extrahieren und dann einfache Fehler zu "beheben" (wenn vorhanden), wie zum Beispiel Jahre, Monate und Tage wenn möglich.

Datums- und Zeitformate (Formate variieren laut Gebietsschema)

Konstante | Beschreibung | Datum | Ergebnis
--- | --- | --- | ---
`Zend_Date::ERA` | Epoche (Zeichenkette, Lokalisiert, Abgekürzt) | 2009-02-13T14:53:27+01:00 | AD (Anno Domini)
`Zend_Date::ERA_NAME` | Epoche (Zeichenkette, Lokalisiert, Vollständig) | 2009-02-13T14:53:27+01:00 | Anno Domini (anno Domini)
`Zend_Date::DATES` | Standard Datum (Zeichenkette, Lokalisiert, Standard Wert). | 2009-02-13T14:53:27+01:00 | 13.02.2009
`Zend_Date::DATE_FULL` | Vollständiges Datum (Zeichenkette, Lokalisiert, Vollständig) | 2009-02-13T14:53:27+01:00 | Freitag, 13. Februar 2009
`Zend_Date::DATE_LONG` | Langes Datum (Zeichenkette, Lokalisiert, Lang) | 2009-02-13T14:53:27+01:00 | 13. Februar 2009
`Zend_Date::DATE_MEDIUM` | Normales Datum (Zeichenkette, Lokalisiert, Normal) | 2009-02-13T14:53:27+01:00 | 13.02.2009
`Zend_Date::DATE_SHORT` | Abgekürztes Datum (Zeichenkette, Lokalisiert, Abgekürzt) | 2009-02-13T14:53:27+01:00 | 13.02.09
`Zend_Date::TIMES` | Standard Zeit (Zeichenkette, Lokalisiert, Standard Wert) | 2009-02-13T14:53:27+01:00 | 14:53:27
`Zend_Date::TIME_FULL` | Vollständige Zeit (Zeichenkette, Lokalisiert, Vollständig) | 2009-02-13T14:53:27+01:00 | `14:53 Uhr CET`
`Zend_Date::TIME_LONG` | Lange Zeit (Zeichenkette, Lokalisiert, Lang) | 2009-02-13T14:53:27+01:00 | `14:53:27 CET`
`Zend_Date::TIME_MEDIUM` | Normale Zeit (Zeichenkette, Lokalisiert, Normal) | 2009-02-13T14:53:27+01:00 | 14:53:27
`Zend_Date::TIME_SHORT` | Abgekürzte Zeit (Zeichenkette, Lokalisiert, Abgekürzt) | 2009-02-13T14:53:27+01:00 | 14:53
`Zend_Date::DATETIME` | Standard Datum mit Zeit (String, Lokalisiert, Standardwert) | 2009-02-13T14:53:27+01:00 | 13.02.2009 14:53:27
`Zend_Date::DATETIME_FULL` | Vollständiges Datum mit Zeit (String, Lokalisiert, Vollständig) | 2009-02-13T14:53:27+01:00 | `Friday, 13. February 2009 14:53 Uhr CET`
`Zend_Date::DATETIME_LONG` | Langes Datum mit Zeit (String, Lokalisiert, Lang) | 2009-02-13T14:53:27+01:00 | `13. February 2009 14:53:27 CET`
`Zend_Date::DATETIME_MEDIUM` | Normales Datum mit Zeit (String, Lokalisiert, Normal) | 2009-02-13T14:53:27+01:00 | 13.02.2009 14:53:27
`Zend_Date::DATETIME_SHORT` | Abgekürztes Datum mit Zeit (String, Lokalisiert, Abgekürzt) | 2009-02-13T14:53:27+01:00 | 13.02.09 14:53

## Selbst-definierte AUSGABE-Formate mit ISO

Wenn ein Datumsformat benötigt wird, das oben nicht angeführt ist, kann mit Hilfe der unten aufgeführten ISO-Formatsbezeichner auch ein selbst-definiertes Format erstellt werden. Die folgenden Beispiele zeigen die Verwendung der Konstanten dieser Tabelle, um selbst-definierte ISO-Formate zu erstellen. Die Länge des Formats ist nicht limitiert. Auch die mehrfache Verwendung von Format-Konstanten ist gestattet.

Die akzeptierten Formatbezeichner können vom ISO-Format zu date-Format von PHP geändert werden, wenn man damit mehr Erfahrung hat. Wie auch immer, nicht alle Formate, welche in der ISO-Norm definiert sind, werden durch PHPs date-Formatbezeichner unterstützt. Die Verwendung der Methode Zend_Date::setOptions(array('format_type' => 'php')) erlaubt es, für alle Zend_Date-Methoden, zwischen der Unterstützung von ISO-Formatbezeichnern und PHP date() Typbezeichner zu wählen (siehe selbst definierte AUSGABE-Formate bei Verwendung von PHPs date()-Formatzeichen).

Selbstdefinition von ISO-Formaten

    $locale = new Zend_Locale('de_AT');
    $date = new Zend_Date(1234567890, false, $locale);
    print $date->toString("'Epoche:GGGG='GGGG, ' Datum:yy.MMMM.dd'yy.MMMM.dd");

Konstanten für ISO 8601 Datumsausgaben

Konstante | Beschreibung | Passt am besten zu | Ergebnis
--- | --- | --- | ---
G | Epoche, Lokalisiert, Abgekürzt | `Zend_Date::ERA` | AD
GG | Epoche, Lokalisiert, Abgekürzt | `Zend_Date::ERA` | AD
`GGG` | Epoche, Lokalisiert, Abgekürzt | `Zend_Date::ERA` | AD
`GGGG` | Epoche, Lokalisiert, Vollständig | `Zend_Date::ERA_NAME` | Anno Domini
`GGGGG` | Epoche, Lokalisiert, Abgekürzt | `Zend_Date::ERA` | A
y | Jahr, mindestens eine Ziffer | `Zend_Date::YEAR` | 9
yy | Jahr, mindestens zwei Ziffern | `Zend_Date::YEAR_SHORT` | 09
yyy | Jahr, mindestens drei Ziffern | `Zend_Date::YEAR` | 2009
yyyy | Jahr, mindestens vier Ziffern | `Zend_Date::YEAR` | 2009
yyyyy | Jahr, mindestens fünf Ziffern | `Zend_Date::YEAR` | 02009
Y | Jahr laut ISO 8601, mindestens eine Ziffer | `Zend_Date::YEAR_8601` | 9
YY | Jahr laut ISO 8601, mindestens zwei Ziffern | `Zend_Date::YEAR_SHORT_8601` | 09
`YYY` | Jahr laut ISO 8601, mindestens drei Ziffern | `Zend_Date::YEAR_8601` | 2009
`YYYY` | Jahr laut ISO 8601, mindestens vier Ziffern | `Zend_Date::YEAR_8601` | 2009
`YYYYY` | Jahr laut ISO 8601, mindestens fünf Ziffern | `Zend_Date::YEAR_8601` | 02009
M | Monat, eine oder zwei Ziffern | `Zend_Date::MONTH_SHORT` | 2
MM | Monat, zwei Ziffern | `Zend_Date::MONTH` | 02
`MMM` | Monat, Lokalisiert, Abgekürzt | `Zend_Date::MONTH_NAME_SHORT` | Feb
`MMMM` | Monat, Lokalisiert, Vollständig | `Zend_Date::MONTH_NAME` | Februar
`MMMMM` | Monat, Lokalisiert, Abgekürzt, ein Zeichen | `Zend_Date::MONTH_NAME_NARROW` | F
w | Woche, eine oder zwei Ziffern | `Zend_Date::WEEK` | 5
ww | Woche, zwei Ziffern | `Zend_Date::WEEK` | 05
d | Monatstag, eine oder zwei Ziffern | `Zend_Date::DAY_SHORT` | 9
dd | Monatstag, zwei Ziffern | `Zend_Date::DAY` | 09
D | Tag des Jahres, eine, zwei oder drei Ziffern | `Zend_Date::DAY_OF_YEAR` | 7
DD | Tag des Jahres, zwei oder drei Ziffern | `Zend_Date::DAY_OF_YEAR` | 07
`DDD` | Tag des Jahres, drei Ziffern | `Zend_Date::DAY_OF_YEAR` | 007
E | Wochentag, Lokalisiert, Abgekürzt, ein Zeichen | `Zend_Date::WEEKDAY_NARROW` | M
EE | Wochentag, Lokalisiert, Abgekürzt, zwei oder mehrere Zeichen | `Zend_Date::WEEKDAY_NAME` | Mo
`EEE` | Wochentag, Lokalisiert, Abgekürzt, drei Zeichen | `Zend_Date::WEEKDAY_SHORT` | Mon
`EEEE` | Wochentag, Lokalisiert, Vollständig | `Zend_Date::WEEKDAY` | Montag
`EEEEE` | Wochentag, Lokalisiert, Abgekürzt, ein Zeichen | `Zend_Date::WEEKDAY_NARROW` | M
e | Nummer des Wochentages, eine Ziffer | `Zend_Date::WEEKDAY_DIGIT` | 4
ee | Nummer des Wochentages, zwei Ziffern | `Zend_Date::WEEKDAY_NARROW` | 04
a | Tageszeit, Lokalisiert | `Zend_Date::MERIDIEM` | vorm.
h | Stunde, (1-12), eine oder zwei Ziffern | `Zend_Date::HOUR_SHORT_AM` | 2
hh | Stunde, (01-12), zwei Ziffern | `Zend_Date::HOUR_AM` | 02
H | Stunde, (0-23), eine oder zwei Ziffern | `Zend_Date::HOUR_SHORT` | 2
HH | Stunde, (00-23), zwei Ziffern | `Zend_Date::HOUR` | 02
m | Minute, (0-59), eine oder zwei Ziffern | `Zend_Date::MINUTE_SHORT` | 2
mm | Minute, (00-59), zwei Ziffern | `Zend_Date::MINUTE` | 02
s | Sekunde, (0-59), eine oder zwei Ziffern | `Zend_Date::SECOND_SHORT` | 2
ss | Sekunde, (00-59), zwei Ziffern | `Zend_Date::SECOND` | 02
S | Millisekunde | `Zend_Date::MILLISECOND` | 20536
z | Zeitzone, Lokalisiert, Abgekürzt | `Zend_Date::TIMEZONE` | `CET`
zz | Zeitzone, Lokalisiert, Abgekürzt | `Zend_Date::TIMEZONE` | `CET`
zzz | Zeitzone, Lokalisiert, Abgekürzt | `Zend_Date::TIMEZONE` | `CET`
zzzz | Zeitzone, Lokalisiert, Vollständig | `Zend_Date::TIMEZONE_NAME` | `Europe/Paris`
Z | Differenz der Zeitzone | `Zend_Date::GMT_DIFF` | +0100
ZZ | Differenz der Zeitzone | `Zend_Date::GMT_DIFF` | +0100
`ZZZ` | Differenz der Zeitzone | `Zend_Date::GMT_DIFF` | +0100
`ZZZZ` | Differenz der Zeitzone, geteilt | `Zend_Date::GMT_DIFF_SEP` | +01:00
A | Millisekunden des aktuellen Tages | `Zend_Date::MILLISECOND` | 20563

Es muß beachtet werden, dass sich das Standard-ISO-Format vom PHP-Format unterscheidet, was irritierend sein kann, wenn man es vorher noch nie verwendet hat. Speziell die Formatbezeichner für Jahr und Minute werden oft nicht auf die erwartete Art und Weise verwendet.

Für das Jahr gibt es zwei vorhandene Bezeichner die oft vertauscht werden. Der Y Bezeichner für das ISO-Jahr und den y Bezeichner für das wirkliche Jahr. Der Unterschied ist klein aber signifikant. Y berechnet das ISO-Jahr, welches oft für Kalender-Formate verwendet wird. Zum Beispiel der 31. Dezember 2007. Das wirkliche Jahr ist 2007, aber es ist der erste Tag der ersten Woche, der Woche 1, des Jahres 2008. Deswegen erhält man, wenn man '`dd.MM.yyyy`' verwendet den '`31.Dezember.2007`', aber wenn man '`dd.MM.YYYY`' verwendet den '`31.Dezember.2008`'. Wie man sieht, ist das kein Fehler, sondern ein erwartetes Verhalten basierend auf den verwendeten Bezeichnern.

Für die Minute ist der Unterschied nicht so groß. ISO verwendet den Bezeichner m für die Minute, anders als PHP, welches i verwendet. Wenn man also keine Minute erhält, dann sollte man sein Format darauf prüfen, ob der richtige Bezeichner verwendet wurde.

## Selbst-definierte AUSGABE-Formate, welche die PHP-date()-Formatdefinition verwenden

Wenn man mit der PHP-date-Formatdefinition vertrauter ist als mit den ISO-Formatdefinitionen, dann kann man durch Verwendung der Methode Zend_Date::setOptions(array('format_type' => 'php')) von der ISO-Formatdefinition zur PHP date()-Formatdefinition wechseln, welche dann für alle Zend_Date-Methoden verwendet werden. Danach müssen alle Format-Parameter in PHPs date()-Formatdefintion angegeben werden. Dem PHP-date-Format fehlen einige der Formate, welche durch ISO unterstützt werden und umgekehrt. Wenn keine Erfahrung damit besteht, sollte auf alle Fälle das ISO-Format genommen werden. Und wenn Altlast-Code vorhanden ist, der das PHP-date-Format verwendet, kann dieser entweder manuell in das ISO-Format konvertiert werden, indem Zend_Locale_Format::convertPhpToIsoFormat() verwendet wird, oder durch Verwendung von setOptions(). Die folgenden Beispiel zeigen die Verwendung der Konstanten anhand der unteren Tabelle für die Erstellung von selbst-definierten Formaten.

Selbstdefinierte Formate mit PHP-Bezeichnern

    $locale = new Zend_Locale('de_AT');
    Zend_Date::setOptions(array('format_type' => 'php'));
    $date = new Zend_Date(1234567890, false, $locale);

    // Ausgabe zum Beispiel 'Februar 16, 2007, 3:36 vorm.'
    print $date->toString('F j, Y, g:i a');

    print $date->toString("'Format:D M j G:i:s T Y='D M j G:i:s T Y");

PHP-Datumsformat und die Verwendung von Konstanten

Es ist wichtig anzumerken, dass die Konstanten von Zend_Date die ISO-Schreibweise verwenden. Das bedeutet, wenn man für Zend_Date setzt, dass es die PHP-Schreibweise verwenden soll, dann sollte man die Konstanten von Zend_Date nicht verwenden, sondern das gewünschte Format manuell selbst definieren. Wenn man dieser Empfehlung nicht folgt, kann das zu unerwarteten Ergebnissen führen.

Die folgende Tabelle zeigt die Liste der PHP-date-Formatdefinitionen mit ihrem Äquivalent in Zend_Date-Konstanten und der im CLDR und ISO äquivalenten Formatdefintion. In den meisten Fällen, wenn das CLDR und ISO-Format keine entsprechende Formardefinition enthält, wird die PHP-Formatdefinition nicht durch Zend_Locale_Format::convertPhpToIsoFormat() geändert, und die Zend_Date Methoden erkennen dann diese "besonderen" PHP-Formatdefinitionen, selbst im standardmäßigen "ISO"-Formatcode.

Konstanten für PHP-date-Ausgaben

Konstante | Beschreibung | Passt am besten zu | Nähestes Äquivalent zu CLDR | Ergebnis
--- | --- | --- | --- | ---
d | Tag des Monats, zwei Ziffern | `Zend_Date::DAY` | dd | 09
D | Tag der Woche, Lokalisiert, Abgekürzt, drei Zeichen | `Zend_Date::WEEKDAY_SHORT` | `EEE` | Mon
j | Tag des Monats, eine oder zwei Ziffern | `Zend_Date::DAY_SHORT` | d | 9
l (kleingeschriebenes L) | Tag der Woche, Lokalisiert, Vollständig | `Zend_Date::WEEKDAY` | `EEEE` | Montag
N | Nummer des Wochentags, eine Ziffer | `Zend_Date::WEEKDAY_8601` | e | 4
S | Englische Anhänge für den Monatstag, zwei Zeichen | keine Entsprechung | keine Entsprechung | st
w | Nummer des Wochentags, 0=Sonntag, 6=Samstag | `Zend_Date::WEEKDAY_DIGIT` | keine Entsprechung | 4
z | Tag des Jahres, eine, zwei oder drei Ziffern | `Zend_Date::DAY_OF_YEAR` | D | 7
W | Woche, eine oder zwei Ziffern | `Zend_Date::WEEK` | w | 5
F | Monat, Lokalisiert, Vollständig | `Zend_Date::MONTH_NAME` | `MMMM` | Februar
m | Monat, zwei Ziffern | `Zend_Date::MONTH` | MM | 02
M | Monat, Lokalisiert, Abgekürzt | `Zend_Date::MONTH_NAME_SHORT` | `MMM` | Feb
n | Monat, eine oder zwei Ziffern | `Zend_Date::MONTH_SHORT` | M | 2
t | Anzahl der Tag des Monats, eine oder zwei Ziffern | `Zend_Date::MONTH_DAYS` | keine Entsprechung | 30
L | Schaltjahr, Boolean | `Zend_Date::LEAPYEAR` | keine Entsprechung | `TRUE`
o | Jahr laut ISO 8601, mindestens vier Ziffern | `Zend_Date::YEAR_8601` | `YYYY` | 2009
Y | Jahr, mindestens vier Ziffern | `Zend_Date::YEAR` | yyyy | 2009
y | Jahr, mindestens zwei Ziffern | `Zend_Date::YEAR_SHORT` | yy | 09
a | Tageszeit, Lokalisiert | `Zend_Date::MERIDIEM` | a (Ähnlich, aber meistens Großschreibung) | vorm.
A | Tageszeit, Lokalisiert | `Zend_Date::MERIDIEM` | a (Ähnlich, aber keine Garantie dass das Format Großgeschrieben ist) | `VORM.`
B | Swatch Internet Zeit | `Zend_Date::SWATCH` | keine Entsprechung | 1463
g | Stunde, (1-12), eine oder zwei Ziffern | `Zend_Date::HOUR_SHORT_AM` | h | 2
G | Stunde, (0-23), eine oder zwei Ziffern | `Zend_Date::HOUR_SHORT` | H | 2
h | Stunde, (01-12), zwei Ziffern | `Zend_Date::HOUR_AM` | hh | 02
H | Stunde, (00-23), zwei Ziffern | `Zend_Date::HOUR` | HH | 02
i | Minute, (00-59), zwei Ziffern | `Zend_Date::MINUTE` | mm | 02
s | Sekunde, (00-59), zwei Ziffern | `Zend_Date::SECOND` | ss | 02
e | Zeitzone, Lokalisiert, Vollständig | `Zend_Date::TIMEZONE_NAME` | zzzz | `Europe/Paris`
I | Tageslicht | `Zend_Date::DAYLIGHT` | keine Entsprechung | 1
O | Differenz der Zeitzone | `Zend_Date::GMT_DIFF` | Z, ZZ oder `ZZZ` | +0100
P | Differenz der Zeitzone, getrennt | `Zend_Date::GMT_DIFF_SEP` | `ZZZZ` | +01:00
T | Zeitzone, Lokalisiert, Abgekürzt | `Zend_Date::TIMEZONE` | kann z oder zz oder zzz sein | `CET`
Z | Abstand der Zeitzone in Sekunden | `Zend_Date::TIMEZONE_SECS` | keine Entsprechung | 3600
c | Standard ISO Format Ausgabe | `Zend_Date::ISO_8601` | keine Entsprechung | 2004-02-13T15:19:21+00:00
r | Standard RFC 2822 Format Ausgabe | `Zend_Date::RFC_2822` | keine Entsprechung | Don, 21 Dec 2000 16:01:07 +0200
U | Unix Zeitpunkt | `Zend_Date::TIMESTAMP` | keine Entsprechung | 15275422364