Function.strtotime
Aus PHP-Wiki
strtotime — Wandelt ein beliebiges in englischer Textform angegebenes Datum in einen UNIX-Zeitstempel (Timestamp) um
Inhaltsverzeichnis |
Beschreibung
int strtotime
( string $time
[, int $now
] )
Diese Funktion erwartet einen String mit einem Datum in US-englischem
Datumsformat und versucht, dieses Format in einen Unix-Timestamp (die Anzahl
der Sekunden seit dem 01. Januar 1970 00:00:00 GMT) zu übersetzen. Die Angabe
wird relativ zum im now
-Parameter übergebenen
Timestamp oder der aktuellen Zeit, sofern now
nicht
unterstützt wird, ausgewertet.
Die Funktion verwendet, sofern diese verfügbar ist, die
TZ-Umgebungsvariable um den Timestamp zu berechnen. Seit
PHP 5.1.0 gibt es einfachere Wege, die zu verwendende Zeitzone festzulegen,
die mit allen Datums- und Zeitfunktionen verwendet werden soll.
Ausführlichere Erklärungen dazu finden Sie auf der
date_default_timezone_get()-Manualseite.
Hinweis:
Wenn die Jahreszahlenangabe zweistellig erfolgt, werden Werte zwischen 00
und 69 auf die Jahre 2000 bis 2069 gemappt, die Werte 70-99 ergeben die
Jahreszahlen 1970-1999.
Parameter-Liste
- time
- Die zu parsende Zeichenkette entsprechend der GNU [Datumseingabeformat]-Syntax. Vor PHP 5.0.0 war die Angabe von Mikrosekunden in einer Zeitangabe nicht erlaubt, seit PHP 5.0.0 ist dies erlaubt, wird aber ignoriert.
- now
- Der Timestamp, der für die Berechnung des Rückgabewertes verwendet wird.
Rückgabewerte
Gibt im Erfolgsfall einen Timestamp, andernfalls FALSE zurück. Vor PHP 5.1.0 gab die Funktion -1 im Fehlerfall zurück.
Fehler/Exceptions
Every call to a date/time function will generate a E_NOTICE if the time zone is not valid, and/or a E_STRICT message if using the system settings or the TZ environment variable. See also date_default_timezone_set()
ChangeLog
Version
Beschreibung
5.1.0
Die Funktion gibt nun statt -1 im Fehlerfall FALSE
zurück.
5.1.0
Erzeugt nun E_STRICT und E_NOTICE
Zeitzohnenfehler.
Beispiele
#1 Ein strtotime()
<?php echo strtotime("now"), "\n"; echo strtotime("10 September 2000"), "\n"; echo strtotime("+1 day"), "\n"; echo strtotime("+1 week"), "\n"; echo strtotime("+1 week 2 days 4 hours 2 seconds"), "\n"; echo strtotime("next Thursday"), "\n"; echo strtotime("last Monday"), "\n"; ?>
Beispiel #2 Test auf Fehler
<?php $str = 'Not Good'; // vor PHP 5.1.0 wuerden Sie -1 statt false als Rueckgabewert erhalten if (($timestamp = strtotime($str)) === false) { echo "Die Zeichenkette ($str) ist nicht parsebar."; } else { echo "$str == " . date('l dS \o\f F Y h:i:s A', $timestamp); } ?>
Anmerkungen
Warnung
In PHP 5 bis 5.0.2 werden "now" und andere relative
Zeitangaben fälschlicherweise dem Zeitpunkt des Datumswechsels zugeordnet.
Dieses Verhalten unterscheidet sich von anderen Versionen, die diese
Angaben in die korrekte aktuelle Zeit übersetzen.
Warnung
In PHP-Versionen vor 4.4.0 wird "next" fälschlicherweise
als +2 interpretiert. Eine einfache Lösung für dieses Problem ist, explizit
+1 zu verwenden.
Hinweis:
Der gültige Bereich eines Timestamp liegt typischerweise zwischen
Fri, 13 Dec 1901 20:45:54 GMT und Tue, 19 Jan 2038 03:14:07 GMT.
(Das sind die Datumsangaben, die dem minimalen und maximalen Wert eines
vorzeichenbehafteten 32-bit Integer entsprechen.) Zusätzlich
unterstützen nicht alle Plattformen negative Werte eines Timestamps,
deshalb könnte der Wertebereich eines Datums durch den Beginn der Unix
Epoche begrenzt sein. Das bedeutet, dass z.B. Zeitangaben vor dem
01. Januar 1970 auf Windowssystemen, einigen
Linuxdistributionen und einigen anderen Betriebssytemen nicht
funktionieren. Die PHP-Versionen 5.1.0 und neuer heben diese Beschränkung
auf.