strtotime
(PHP 4, PHP 5, PHP 7, PHP 8)
strtotime — Wandelt eine textuelle englische Datums- und Zeitbeschreibung in einen Unix-Zeitstempel um
Beschreibung
Diese Funktion erwartet eine Zeichenkette mit einem Datum im englischen
Datumsformat und versucht, dieses Format in einen Unix-Zeitstempel (die
Anzahl der Sekunden seit dem 1. Januar 1970 00:00:00 UTC) zu übersetzen.
Die Angabe wird relativ zum Zeitstempel ausgewertet, der im Parameter
baseTimestamp
übergebenen wurde, oder,
falls baseTimestamp
nicht übergeben wurde, relativ
zur aktuellen Zeit. Das Format der Zeichenkette, die das auszuwertende
Datum enthält, ist in
Unterstützte Datums- und Zeitformate
definiert, wobei einige Feinheiten zu beachten sind. Es wird dringend
empfohlen, sich dort mit allen Details vertraut zu machen.
Warnung
Der Unix-Zeitstempel, den diese Funktion zurückgibt, enthält keine
Informationen über Zeitzonen. Um Berechnungen mit Datums- und Zeitwerten
durchzuführen, sollte das leistungsfähigere
DateTimeImmutable verwendet werden.
Jeder Parameter dieser Funktion verwendet die Standardzeitzone, es sei
denn, im betreffenden Parameter wird eine Zeitzone angegeben. Es ist darauf
zu achten, nicht etwa verschiedene Zeitzonen je Parameter zu verwenden,
außer es ist beabsichtigt. Die verschiedenen Möglichkeiten, die
Standardzeitzone zu definieren, sind
date_default_timezone_get() zu entnehmen.
Parameter-Liste
datetime
-
Ein Datums/Zeit Zeichenkette.
Gültige Formate werden unter Datums- und Zeitformate erläutert.
baseTimestamp
-
Der Zeitstempel, der als Basis zur Berechnung relativer Daten verwendet
wird.
Rückgabewerte
Gibt im Erfolgsfall einen Zeitstempel zurück, andernfalls false
.
Beispiele
Beispiel #1 Ein strtotime()-Beispiel
<?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';
if (($timestamp = strtotime($str)) === false) {
echo "Die Zeichenkette ($str) ist fehlerhaft.";
} else {
echo "$str == " . date('l dS \o\f F Y h:i:s A', $timestamp);
}
?>
Anmerkungen
Hinweis:
"Relatives" Datum bedeutet in diesem Fall auch, dass nicht angegebene
Komponenten des Datums-/Zeitstempels unverändert aus dem
baseTimestamp
übernommen werden. Das heißt, dass
strtotime('February')
am 31. Mai 2022 als
31 February 2022
interpretiert wird, was zum
Zeitstempel 3 March
führt (in einem Schaltjahr wäre es
2 March
). Stattdessen
strtotime('1 February')
oder
strtotime('first day of February')
zu verwenden, würde dieses
Problem vermeiden.
Hinweis:
Wenn die Angabe der Jahreszahl zweistellig erfolgt, werden Werte von 0-69
den Jahren 2000-2069 zugeordnet, die Werte 70-99 ergeben die Jahreszahlen
1970-1999. Zu möglichen Unterschieden auf 32-Bit-Systemen (mögliche
Datumsangaben könnten am 2038-01-19 03:14:07 enden) ist der folgende
Hinweis zu beachten.
Hinweis:
Der gültige Bereich eines Zeitstempels liegt typischerweise zwischen
Fri, 13 Dec 1901 20:45:54 UTC und Tue, 19 Jan 2038 03:14:07 UTC
(das sind die Datumsangaben, die dem minimalen und maximalen Wert eines
vorzeichenbehafteten 32-bit Integer entsprechen).
Bei 64-Bit-Versionen von PHP ist der gültige Bereich für Zeitstempel
praktisch unendlich groß, da 64 Bit etwa 293 Milliarden Jahre in beide
Richtungen darstellen können.
Hinweis:
Es ist nicht empfehlenswert, diese Funktion für mathematische Berechnungen
zu verwenden. Dafür sollten stattdessen
DateTime::add() und
DateTime::sub() verwendet werden.