# Zend_Date API Übersicht

Obwohl die API von `Zend_Date` simpel und einheitlich ist, ist dessen Design aufgrund der reichhaltigen Permutationen von Operationen und Operanden flexibel und mächtig.

## Zend_Date Optionen

### Auswahl der Art des Datumsformats

Viele Methoden benutzen Zeichenketten für Datumsformate so ähnlich wie `date()` von PHP. Wenn man mit den Zeichen der Datumsformaten von PHP mehr Erfahrung hat als mit den ISO-Zeichen für Formate, dann kann man `Zend_Date::setOptions(array('format_type' => 'php'))` benutzen. Danach können die Zeichen von PHP für Datumsformate für alle Funktionen verwendet werden, die einen `$format`-Parameter akzeptieren. Durch Benutzen von `Zend_Date::setOptions(array('format_type' => 'iso'))` kann man wieder auf den Standardmodus zurückwechseln, der nur ISO-Zeichen für Datumsformate unterstützt. Für eine Liste von unterstützten Zeichencodes kann hier nachgelesen werden: selbst definierte AUSGABE-Formate bei Verwendung der date()-Formatzeichen von PHP

### Sommer-/Winterzeit und Datumsberechnungen

Wenn Daten manipuliert werden, überschreiten sie manchmal die DST-Grenze (Sommer-/Winterzeit), was normalerweise dazu führt, dass das Datum eine Stunde verliert oder hinzubekommt. Wenn zum Beispiel ein Monat zu einem Datum vor einer DST-Änderung hinzugefügt wird und der Ergebnismonat nach dieser Änderung liegt, sieht es so aus, als ob das Datum durch den Wert des geänderten Datums eine Stunde verliert oder hinzubekommt. Für Grenzstunden wie Mitternacht, für den ersten oder letzten Tag eines Monats, führt das Hinzufügen von genügend Monaten dazu, dass das Datum eine Stunde verliert, wenn die DST-Grenze überschritten wird und damit zum letzten Tag des Vormonats wird, was den Anschein eines "eins fehlt" Fehlers erweckt. Um diese Situationen zu vermeiden, kann die DST-Änderung durch Verwendung der Option fix_dst ignoriert werden. Wenn eine DST-Grenze überschritten wird, wird ja normalerweise abhängig vom Datum eine Stunde hinzugefügt oder entfernt. Zum Beispiel führt eine Datumsberechnung mit DST im Frühling zu einem Datum, welche einen Tag weniger hat als erwartet, wenn die Zeit des Originaldatums 00:00:00 war. Da `Zend_Date` auf Zeitstempeln basiert und nicht auf Kalenderdaten mit Zeitkomponenten, verliert der Zeitstempel eine Stunde, was zu einem Datum führt, das einen Kalendertag weniger hat, als erwartet. Um solche Problem zu verhindern, kann die Option fix_dst verwendet werden, welche standardmäßig `TRUE` ist. Das führt dazu, dass die DST keinen Einfluss mehr bei Datumsberechnungen hat (`addMonth()`, `subMonth()`). `Zend_Date::setOptions(array('fix_dst' => false))` kann benutzt werden, um Hinzufügen oder Entfernen der DST-Anpassung zu gestatten, wenn Datumsberechnungen durchgeführt werden.

Wenn die aktuelle Zeitzone innerhalb der Instanz von `Zend_Date` auf UTC oder GMT gestellt ist, wird die Option 'fix_dst' nicht verwendet, weil diese zwei Zeitzonen nicht mit DST arbeiten. Wenn die Zeitzone für diese Instanz wieder auf eine Zeitzone gestellt wird, die nicht UTC oder GMT ist, wird die vorher definierte Option 'fix_dst' wieder für die Datumsberechnungen verwendet.

### Monatsberechnungen

Wenn Monate zu einem existierenden Datum hinzugefügt oder davon entfernt werden, kann der Ergebniswert des Monatstages unerwartet sein, wenn das Originaldatum auf einen Tag gefallen ist, der Nahe am Ende des Monats ist. Wenn zum Beispiel ein Monat zum 31sten Jänner hinzugefügt wird, werden Personen, welche mit SQL vertraut sind, den 28sten Februar als Ergebnis erwarten. Auf der anderen Seite werden Personen, welche mit Excel und OpenOffice vertraut sind, den 3ten März als Ergebnis erwarten. Das Problem besteht nur, wenn der Ergebnismonat den Tag nicht hat, der im Originaldatum gesetzt war. Zend Framework Entwickler können das gewünschte Verhalten beeinflussen, indem die Option extend_month genutzt wird, die bei einem Wert von `FALSE` das SQL-Verhalten, oder bei einem Wert von `TRUE` das Tabellenverhalten auswählt. Das Standardverhalten für extend_month ist `FALSE`, um SQL-kompatibles Verhalten zu erlauben. `Zend_Date` führt Monatsberechnungen standardmäßig in der Art durch, dass Daten auf das Monatsende hin abgeschnitten werden (wenn notwendig), ohne dass in den nächsten Monat umgebrochen wird, wenn das Originaldatum einen Monatstag bestimmt, der die Anzahl der Tage des Ergebnismonats überschreitet. `Zend_Date::setOptions(array('extend_month' => true))` kann benutzt werden, um Monatsberechnungen wie in populären Tabellenkalkulationen durchzuführen.

### Lokalisierung und Normalisierung von Daten mit Zend_Cache schneller machen

Man kann `Zend_Date` schneller machen, indem ein `Zend_Cache`-Adapter verwendet wird. Das verschnellert alle Methoden von `Zend_Date`, wenn lokalisierte Daten verwendet werden. Zum Beispiel werden alle Methoden hiervon profitieren, welche `Zend_Date::DATE` und `Zend_Date::TIME` Konstanten akzeptieren. Um einen `Zend_Cache`-Adapter für `Zend_Date` zu verwenden, muss nur `Zend_Date::setOptions(array('cache' => $adapter))` aufgerufen werden.

### Syncronisierte Zeiten mit Zend_TimeSync erhalten

Normalerweise unterscheiden sich die Uhren von Servern und Computern voneinander. `Zend_Date` ist dazu fähig, solche Probleme mit Hilfe von `Zend_TimeSync` zu handhaben. Mit `Zend_Date::setOptions(array('timesync' => $timeserver))` kann ein Zeitserver gesetzt werden, welcher den Unterschied zwischen dem eigenen aktuellen Zeitstempel und dem wirklichen aktuellen Zeitstempel für alle Instanzen von `Zend_Date` setzt. Die Verwendung dieser Option ändert nicht den Zeitstempel von bestehenden Instanzen. Am besten ist es also, dies innerhalb der Bootstrap-Datei zu setzen.

## Arbeiten mit Datumswerten

Sobald die Eingabe durch die Erstellung eines `Zend_Date`-Objekts normalisiert wurde, hat es eine zugeordnete Zeitzone aber die interne Darstellung verwendet UNIX-Zeitstempel. Damit ein Datum in einer lokalisierten Art und Weise durchsucht werden kann, muss zuerst eine Zeitzone bekannt sein. Die Standardzeitzone ist immer GMT oder UTC. Um die Zeitzone des Objekts zu inspizieren, kann `getTimeZone()` verwendet werden. Um die Zeitzone des Objekts zu wechseln, kann `setTimeZone()` verwendet werden. Alle Änderungen des Objekts sind immer relativ zu seiner Zeitzone zu sehen.

Man sollte es vermeiden, Teile von Datumsobjekten mit unterschiedlichen Zeitzonen zu mischen oder zu vergleichen, da dies grundsätzlich unerwartete Resultate zeigen kann, es sei denn, die Manipulationen beziehen sich nur auf den [UNIX-]Zeitstempel. Das Arbeiten mit `Zend_Date`-Objekten, die unterschiedliche Zeitzonen haben, funktioniert grundsätzlich, abgesehen davon wie vorher erwähnt, da Daten bei der Instantiierung von `Zend_Date` zu UNIX-Zeitstempel normalisiert werden.

Die meisten Methoden erwarten eine Konstante für die Auswahl des gewünschten Teils `$part` des Datums, wie z.B. `Zend_Date::HOUR`. Diese Konstanten sind für alle unten angeführten Funktionen gültig. Eine Liste aller vorhandenen Konstanten wird hier beschrieben: Liste aller Konstanten. Wenn `$part` nicht spezifiziert wird, wird `Zend_Date::TIMESTAMP` angenommen. Alternativ kann ein benutzerdefiniertes Format für `$part` verwendet werden, mit Hilfe der gleichen Mechanismen und Formatdefinitionen wie bei `Zend_Locale_Format::getDate()`. Wenn ein Datumsobjekt durch Verwendung eines offensichtlich falschen Datums erstellt wird (z.B. wenn die Nummer des Monats größer als 12 ist), wird `Zend_Date` eine Ausnahme werfen, solange kein spezielles Datumsformat ausgewählt wurde, das heißt, `$part` ist entweder `NULL` oder `Zend_Date::DATES` (ein "fehlertolerantes" Format).

### Benutzerdefinierte Eingabeformate für Daten

    $date1 = new Zend_Date('Feb 31, 2007', null, 'en_US');
    echo $date1, "\n"; // Ausgabe "Mar 3, 2007 12:00:00 AM"

    $date2 = new Zend_Date('Feb 31, 2007', Zend_Date::DATES, 'en_US');
    echo $date2, "\n"; // Ausgabe "Mar 3, 2007 12:00:00 AM"

    // Stikte Interpretation des angegebenen Formats
    $date3 = new Zend_Date('Feb 31, 2007', 'MM.dd.yyyy');
    echo $date3, "\n"; // Ausgabe "Mar 3, 2007 12:00:00 AM"

Wenn der optionale Parameter `$locale` angegeben wird, dann macht `$locale` den `$date`-Operand durch Ersetzen der Monatsnamen und Wochentagsnamen für die Zeichenkette `$date` eindeutig und sogar Datumszeichenketten können gemäß den Konventionen dieses Gebietsschemas analysiert werden (siehe Zend_Locale_Format::getDate()). Die automatische Normalisierung von lokalisierten `$date`-Angaben einer Zeichenkette werden nur dann durchgeführt wenn für `$part` eine der Konstanten `Zend_Date::DATE`* oder `Zend_Date::TIME`* verwendet wird. Das Gebietsschema identifiziert die Sprache, welche verwendet werden soll, um Monatsnamen und Wochentagsnamen zu analysieren, wenn `$date` eine Zeichenkette ist, die ein Datum enthält. Wenn der Eingabeparameter `$date` nicht angegeben wurde, dann definiert der Parameter `$locale` das Gebietsschema für lokalisierte Ausgaben (z.B. das Datumsformat für eine Ausgabe als Zeichenkette). Anzumerken ist auch, dass der Parameter `$date` stattdessen ein Typname sein kann (z.B. `$hour` für `addHour()`) wobei das nicht verhindert, dass ein `Zend_Date` Objekt als Argument für diesen Parameter angegeben werden kann. Wenn `$locale` nicht angegeben wurde, wird das Gebietsschema des aktuellen Objekts genommen, um `$date` zu interpretieren oder das lokalisierte Format für die Ausgabe auszuwählen.

Seit Zend Framework 1.7.0 unterstützt `Zend_Date` auch die Verwendung eines anwendungsweiten Gebietsschemas. Man kann ganz einfach eine `Zend_Locale`-Instanz in der Registry setzen wie hier gezeigt. Mit dieser Schreibweise braucht man sich nicht um das manuelle Setzen eines Gebietsschemas für jede Instanz zu kümmern, wenn man dasselbe Gebietsschema mehrere Male verwenden will.

    // In der Bootstrap-Datei
    $locale = new Zend_Locale('de_AT');
    Zend_Registry::set('Zend_Locale', $locale);

    // Irgendwo in der eigenen Anwendung
    $date = new Zend_Date('31.Feb.2007');

## Grundsätzliche Zend_Date Operationen für die meisten Teile von Daten

Die Methoden `add()`, `sub()`, `compare()`, `get()` und `set()` arbeiten generell mit Daten. In jedem Fall wird die Operation auf dem Datum durchgeführt, das in der Objektinstanz vorhanden ist. Der `$date` Operand wird für alle diese Methoden benötigt, außer für `get()` und kann eine `Zend_Date` Objektinstanz, eine numerische Zeichenkette oder ein Integer sein. Diese Methoden nehmen an, dass `$date` ein Zeitstempel ist, wenn es kein Objekt ist. Trotzdem kontrolliert der `$part` Operand, an welchem logischen Teil der zwei Daten gearbeitet werden soll, was Arbeiten an Teilen von Daten des Objekts erlaubt, wie Jahr oder Minute, selbst wenn `$date` eine lange Form einer Datumszeichenkette enthält wie "Dezember 31, 2007 23:59:59". Das Ergebnis der Operation ändert das Datum im Objekt außer bei `compare()` und `get()`.

### Arbeiten an Teilen von Daten

    $date = new Zend_Date(); // $date's Zeitstempel === time()

    // Ändert $date durch addieren von 12 Stunden
    $date->add('12', Zend_Date::HOUR);
    print $date;

Es existieren Komfortmethoden für jede Kombination von Grundoperationen und viele normale Datumsabschnitte wie in der unten stehenden Tabelle gezeigt. Diese Komfortmethoden erlauben uns faulen Programmierern zu vermeiden, dass die Konstanten für Datumsabschnitte ausgeschrieben werden müssen. Bequemerweise sind sie benannt durch Kombination eines Prefixes (Name der Basisoperation) und einem Suffix (Art des Datumsabschnittes), wie `addYear()`. In der unten stehenden Liste existieren alle Kombinationen von "Datumsabschnitten" und "Basisoperationen". Zum Beispiel die Operation "add" existiert für jeden dieser Datumsabschnitte wie `addDay()`, `addYear()` und viele mehr.

Diese Komfortmethoden haben eine gleichwertige Funktionalität wie die Methoden für die Basisoperationen, aber sie erwarten `$date`-Operanden vom Typ Zeichenkette oder Integer, welche nur die Werte enthalten, die durch den Typ definiert sind, der durch das Suffix der Methode definiert wurde. Deshalb identifizieren diese Methoden (z.B. "Year" oder "Minute") die Einheit des `$date` Operanden, wenn `$date` eine Zeichenkette oder ein Integer ist

### Liste der Datumsabschnitte

#### Datumsabschnitte

Datumsabschnitt | Erklärung
--- | ---
Zeitstempel | UNIX-Zeitstempel, ausgedrückt in Sekunden die vergangen sind seit dem 1. Jänner, 1970 00:00:00 GMT.
Jahr | Gregorianisches Kalenderjahr (z.B. 2006)
Monat | Gregorianisches Kalendermonat (1-12, Lokalisierte Namen werden unterstützt)
24 Stunden Uhr | Stunde des Tages (0-23) bezeichnet die vergangenen Stunden seit dem Beginn des Tages
Minute | Minuten der Stunde (0-59) bezeichnet die vergangenen Minuten seit dem Beginn der Stunde
Sekunde | Sekunde der Minute (0-59) bezeichnet die vergangenen Sekunden seit dem Beginn der Minute

Millisekunde

Millisekunden bezeichnen Tausendstel einer Sekunde (0-999). `Zend_Date` unterstützt zwei zusätzliche Methoden für das Arbeiten mit Zeiteinheiten, die kleiner als Sekunden sind. Normalerweise verwenden `Zend_Date` Instanzen eine Genauigkeit, welche der von Millisekunden entspricht wie man durch `getFractionalPrecision()` sehen kann. Um die Genauigkeit zu ändern, kann `setFractionalPrecision($precision)` verwendet werden. Trotzdem ist die Genauigkeit praktisch auf Millisekunden begrenzt, da `Zend_Date` microtime() dafür benutzt.

Tag | `Zend_Date::DAY_SHORT` wird von `$date` extrahiert, wenn der Operand `$date` eine `Zend_Date`-Instanz oder eine numerische Zeichenkette ist. Sonst wird versucht, den Tag gemäß den dokumentierten Konventionen für diese Konstanten zu extrahieren: `Zend_Date::WEEKDAY_NARROW`, `Zend_Date::WEEKDAY_NAME`, `Zend_Date::WEEKDAY_SHORT`, `Zend_Date::WEEKDAY` (Gregorianischer Kalender angenommen)
Woche | `Zend_Date::WEEK` wird von `$date` extrahiert, wenn der Operand `$date` eine Instanz von `Zend_Date` oder eine numerische Zeichenkette ist. Sonst wird eine Ausnahme geworfen. (Gregorianischer Kalender angenommen)
Datum | `Zend_Date::DAY_MEDIUM` wird aus `$date` extrahiert wenn der Operand `$date` eine Instanz von `Zend_Date` ist. Sonst wird versucht, den `$date`-String des Datums in ein `Zend_Date::DATE_MEDIUM`-formatiertes Datum zu normalisieren. Das Format von `Zend_Date::DATE_MEDIUM` hängt vom Gebietsschema des Objekts ab.

Wochentage

Wochentage werden numerisch dargestellt von 0 (für Sonntag) bis 6 (für Samstag). `Zend_Date::WEEKDAY_DIGIT` wird aus `$date` extrahiert wenn der Operand `$date` eine Instanz von `Zend_Date` oder eine numerische Zeichenkette ist. Sonst wird versucht, den Tag gemäß den dokumentierten Konventionen für diese Konstanten zu extrahieren: `Zend_Date::WEEKDAY_NARROW`, `Zend_Date::WEEKDAY_NAME`, `Zend_Date::WEEKDAY_SHORT`, `Zend_Date::WEEKDAY` (Gregorianischer Kalender angenommen)

Tag des Jahres | In `Zend_Date` wird der Tag des Jahres als Anzahl der Kalendertage dargestellt, die seit dem Start des Jahres vergangen sind (0-365). Wie bei den anderen oben dargestellten Einheiten, werden Bruchteile auf die nächste ganze Zahl abgerundet. (Gregorianischer Kalender angenommen)

Arpa

Arpa-Daten (bzw. RFC 822 formatierte Daten) werden unterstützt. Die Ausgabe verwendet entweder "GMT" oder "Laut Gebietsschema unterschiedliche Stunden + Minuten" Format (siehe Sektion 5 von RFC 822). Vor PHP 5.2.2, zeigte die Verwendung der `DATE_RFC822` Konstante mit PHP date-Funktionen hier und da fehlerhafte Ergebnisse. Die Ergebnisse von `Zend_Date` sind korrekt. Beispiel: Mon, 31 Dec 06 23:59:59 GMT

Iso | Für die Ausgabe werden nur vollständige ISO 8601 Daten unterstützt. Beispiel: 2009-02-14T00:31:30+01:00

### Liste der Datums-Operationen

Die unten aufgeführten Basisoperationen können statt den Komfortoperationen für spezielle Datumsabschnitte verwendet werden, wenn die entsprechenden Konstanten für den Parameter `$part` verwendet werden.

#### Basisoperationen

Basisoperationen | Erklärung
--- | ---

`get()`

`get($part = null, $locale = null)`

`get($part)` kann benutzt werden, um einen Datumsabschnitt `$part` dieses Datumsobjekts, welcher in ein Gebietsschema von `$locale` lokalisiert oder als formatierte Zeichenkette oder Integer gewünscht ist zurück zu bekommen. Durch Verwendung der BCMath Erweiterung können numerische Zeichenketten statt Integer für große Werte zurückgegeben werden.

#### Verhalten von get()

Anders als `get()` geben die anderen get*()-Komfortmethoden nur Instanzen von `Zend_Date` zurück, welche nur das Datum oder die Zeit repräsentieren, das ausgewählt oder berechnet wurde.

`set()` | `set($date, $part = null, $locale = null)` Setzt den Abschnitt `$part` des aktuellen Objekts übereinstimmend mit dem Wert, der für diesen Abschnitt in der Eingabe `$date` und im Gebietsschema `$locale` gefunden wurde.
`add()` | `add($date, $part = null, $locale = null)` Addiert den Abschnitt `$part` von `$date`, welcher im Gebietsschema `$locale` geschrieben ist, zum Datum des aktuellen Objekts.
`sub()` | `sub($date, $part = null, $locale = null)` Subtrahiert den Abschnitt `$part` von `$date`, welcher im Gebietsschema `$locale` geschrieben ist, vom Datum des aktuellen Objekts.
`copyPart()` | `copyPart($part, $locale = null)` Gibt ein geklontes Objekt zurück, wobei nur der gewünschte Abschnitt `$part` des Datumsobjekts kopiert wird und im Klon das Gebietsschema von `$locale` gesetzt wird (wenn angegeben).
`compare()` | `compare($date, $part = null, $locale = null)` Vergleicht den Abschnitt `$part` des Datums `$date` mit dem Zeitstempel des Objekts. Gibt 0 zurück, wenn sie gleich sind, 1 wenn der Abschnitt dieses Objekts früher war als der Abschnitt von `$date` und andernfalls -1.

## Vergleichen von Daten

Die folgenden Basisoperationen haben keine vergleichbaren vereinfachten Methoden für Datumsabschnitt wie beschrieben unter Zend_Date API Overview.

### Methoden zum Vergleichen von Daten

Methoden | Beschreibung
--- | ---
`equals()` | `equals($date, $part = null, $locale = null)` Gibt `TRUE` zurück, wenn der Abschnitt `$part` von `$date` der das Gebietsschema `$locale` hat, der gleiche ist wie der Abschnitt `$part` vom Datum des Objekts, andernfalls `FALSE`
`isEarlier()` | `isEarlier($date, $part = null, $locale = null)` Gibt `TRUE` zurück, wenn der Abschnitt `$part` vom Datum des Objekts früher ist als der Abschnitt `$part` von `$date` der das Gebietsschema `$locale` hat
`isLater()` | `isLater($date, $part = null, $locale = null)` Gibt `TRUE` zurück, wenn der Abschnitt `$part` vom Datum des Objekts später ist als der Abschnitt `$part` von `$date` der das Gebietsschema `$locale` hat
`isToday()` | `isToday()` Testet ob Jahr, Monat und Tag des heutigen Datums mit dem Datumswert des Objekts übereinstimmen, wenn die Zeitzone des Objekts verwendet wird.
`isTomorrow()` | `isTomorrow()` Testet ob Jahr, Monat und Tag des morgigen Datums mit dem Datumswert des Objekts übereinstimmen, wenn die Zeitzone des Objekts verwendet wird.
`isYesterday()` | `isYesterday()` Testet ob Jahr, Monat und Tag des gestrigen Datums mit dem Datumswert des Objekts übereinstimmen, wenn die Zeitzone des Objekts verwendet wird.
`isLeapYear()` | `isLeapYear()` `isLeapYear()` kann benutzt werden, um zu prüfen, ob das aktuelle Objekt ein Schaltjahr ist. Sonst kann `Zend_Date::checkLeapYear($year)` benutzt werden, um das Jahr `$year` zu prüfen, welches eine Zeichenkette, ein Integer oder eine Instanz von `Zend_Date` sein kann. Ist das Jahr ein Schaltjahr?
`isDate()` | `isDate($date, $format = null, $locale = null)` Diese Methode prüft, ob ein angegebenes Datum ein echtes Datum ist, und gibt `TRUE` zurück, wenn alle Prüfungen in Ordnung waren. Sie arbeitet wie die PHP-Funktion `checkdate()`, kann aber auch lokalisierte Monatsnamen prüfen sowie Daten, die den Bereich von `checkdate()` übersteigen

## Daten und Teile von Daten abfragen

Mehrere Methoden erlauben es, Werte abzurufen, die sich auf eine `Zend_Date`-Instanz beziehen.

### Ausgabemethoden von Daten

Methode | Erklärung
--- | ---

`toString()`

`toString($format = null, $locale = null)`

Direkt aufzurufen oder über die magische Methode `__toString()`. Die Methode `toString()` formatiert automatisch den Wert des Datumsobjekts anhand der Konventionen des Gebietsschemas des Objekts oder einem optional definierten Gebietsschema `$locale`. Für eine Liste von unterstützten Formatcodes kann hier nachgeschaut werden: selbst definierte AUSGABE Formate mit ISO.

`toArray()`

`toArray()`

Gibt eine Array-Representation des ausgewählten Datums anhand der Konventionen des Gebietsschemas zurück. Das zurückgegebene Array ist identisch zur PHP-Funktion getdate() und beinhaltet:

- Tag als Zahl mit 'day' (`Zend_Date::DAY_SHORT`)

- Monat als Zahl mit 'month' (`Zend_Date::MONTH_SHORT`)

- Jahr als 'year' (`Zend_Date::YEAR`)

- Stunde als 'hour' (`Zend_Date::HOUR_SHORT`)

- Minute als 'minute' (`Zend_Date::MINUTE_SHORT`)

- Sekunde als 'second' (`Zend_Date::SECOND_SHORT`)

- Abgekürzte Zeitzone als 'timezone' (`Zend_Date::TIMEZONE`)

- Unix-Zeitstempel als 'timestamp' (`Zend_Date::TIMESTAMP`)

- Wochentag als Zahl mit 'weekday' (`Zend_Date::WEEKDAY_DIGIT`)

- Tag des Jahres als 'dayofyear' (`Zend_Date::DAY_OF_YEAR`)

- Woche als 'week' (`Zend_Date::WEEK`)

- Abstand der Zeitzone zu GMT als 'gmtsecs' (`Zend_Date::GMT_SECS`)

`toValue()`

`toValue($part = null)`

Gibt eine Integer-Repräsentation des ausgewählten Datumsabschnittes `$part` anhand der Konventionen des Gebietsschemas des Objekts zurück. Gibt `FALSE` zurück wenn der Abschnitt `$part` ein nicht numerischer Wert ist, wie `Zend_Date::MONTH_NAME_SHORT`.

### Grenzen von toValue()

Diese Methode ruft `get()` auf und castet das Ergebnis in einen PHP Integer-Wert, welcher unerwartete Ergebnisse liefern wird, wenn `get()` eine numerische Zeichenkette zurückgibt, die eine Zahl enthält, welche zu groß für einen PHP Integer-Wert auf Ihrem System ist. Stattdessen sollte `get()` benutzt werden.

get() | `get($part = null, $locale = null)` Diese Methode gibt den Abschnitt `$part` vom Datum des Objekts, welches mit dem Gebietsschema `$locale` lokalisiert wurde, als formatierten String oder Integer zurück. Für weitere Informationen hier weiterlesen: get().
`now()` | `now($locale = null)` Diese Komfortfunktion ist identisch mit `new Zend_Date()`. Sie gibt das aktuelle Datum als `Zend_Date` Objekt zurück, welches das Gebietsschema `$locale` hat.

## Arbeiten mit Sekundenbruchteilen

Viele Methoden unterstützen es, Werte relativ zu einer `Zend_Date` Instanz zu erhalten.

### Methoden zur Datumsausgabe

Methode | Erklärung
--- | ---
`getFractionalPrecision()` | Gibt die Genauigkeit des Sekundenbruchteils zurück
`setFractionalPrecision()` | Setzt die Genauigkeit des Sekundenbruchteils

## Sonnenaufgang / Sonnenuntergang

Drei Methoden geben Zugriff auf geographisch lokalisierte Informationen über die Sonne, was die Zeit für Sonnenaufgang und Sonnenuntergang beinhaltet.

### Gewöhnliche Methoden

Methode | Erklärung
--- | ---
`getSunrise($location)` | Gibt die Zeit des Sonnenaufgangs dieses Datums zurück
`getSunset($location)` | Gibt die Zeit des Sonnenuntergangs dieses Datums zurück
`getSunInfo($location)` | Gibt ein Array mit den Sonnendaten des Datums zurück