date
(PHP 4, PHP 5, PHP 7, PHP 8)
date — Formatiert einen Unix-Zeitstempel
Beschreibung
$format
, ?int $timestamp
= null
): string
Gibt einen formatierten String anhand eines vorzugebenden Musters zurück.
Dabei wird entweder der angegebene Unix-Zeitstempel
timestamp
verwendet oder die gegenwärtige Zeit, wenn
kein Zeitstempel angegegeben wird. Mit anderen Worten ausgedrückt: Der
Parameter timestamp
ist optional und wird mit dem
Wert der Funktion time() vorbelegt.
Unix-Zeitstempel berücksichtigen keine Zeitzonen. Mit der Klasse DateTimeImmutable und ihrer Formatierungsmethode DateTimeInterface::format() können Datums- und Zeitangaben mit einer angehängten Zeitzone formatiert werden.
Parameter-Liste
-
format
-
Von DateTimeInterface::format() akzeptiertes Format.
-
timestamp
-
Der optionale Parameter
timestamp
ist ein Unix-Timestamp als int oder die aktuelle lokale Zeit, wenntimestamp
nicht übergeben wurde odernull
ist. Er entspricht dann also dem Ergebnis der Funktion time().
Rückgabewerte
Gibt eine formatierte Datums-Zeichenkette zurück. Falls ein
nicht-numerischer Wert als timestamp
übergeben wird, wird false
zurückgegeben und ein Fehler
der Stufe E_WARNING
erzeugt.
Fehler/Exceptions
Jeder Aufruf der Datums- und Zeitfunktionen generiert einen Fehler der Stufe
E_WARNING
, wenn die Zeitzone ungültig ist. Siehe auch
date_default_timezone_set()
Changelog
Version | Beschreibung |
---|---|
8.0.0 |
timestamp ist jetzt nullbar.
|
Beispiele
Beispiel #1 date()-Beispiele
<?php
// Die Standard-Zeitzone setzen, die verwendet werden soll.
date_default_timezone_set('UTC');
// Gibt etwas aus wie: Monday
echo date("l");
// Gibt etwas aus wie: Monday 8th of August 2005 03:12:46 PM
echo date('l jS \of F Y h:i:s A');
// Gibt aus: July 1, 2000 ist ein Saturday
echo "July 1, 2000 ist ein " . date("l", mktime(0, 0, 0, 7, 1, 2000));
/* Verwende die Konstanten im Format-Parameter */
// Gibt etwas aus wie: Wed, 25 Sep 2013 15:28:57 -0700
echo date(DATE_RFC822);
// Gibt etwas aus wie: 2000-07-01T00:00:00+00:00
echo date(DATE_ATOM, mktime(0, 0, 0, 7, 1, 2000));
?>
Um zu verhindern, dass ein erkanntes Zeichen im Formatstring ersetzt wird, sollte dieses Zeichen mit einem vorangestellten Backslash maskiert werden. Ist das Zeichen mit dem Backslash bereits eine spezielle Zeichenfolge, muss dieser Backslash ebenso maskiert werden.
Beispiel #2 Maskieren von Zeichen in date()
<?php
// Gibt etwas ähnliches aus wie: Wednesday the 15th
echo date('l \t\h\e jS');
?>
Es ist möglich, date() und mktime() gleichzeitig zu verwenden, um Datumsangaben in der Zukunft oder der Vergangenheit zu bestimmen.
Beispiel #3 date() und mktime()-Beispiele
<?php
$morgen = mktime(0, 0, 0, date("m") , date("d")+1, date("Y"));
$letztermonat = mktime(0, 0, 0, date("m")-1, date("d"), date("Y"));
$naechstesjahr = mktime(0, 0, 0, date("m"), date("d"), date("Y")+1);
?>
Hinweis:
Dieses Vorgehen kann zu verlässlicheren Ergebnissen führen, als simples addieren oder subtrahieren der Anzahl von Sekunden in Tagen oder Monaten zu einem Zeitstempel, da Sommer- und Winterzeit berücksichtigt werden.
Es folgen einige Beispiele zur date()-Formatierung. Es ist zu beachten, dass alle anderen Zeichen maskiert werden sollten, da alle Zeichen, die im Augenblick eine spezielle Bedeutung haben, unerwünschte Resultate liefern. Bei allen weiteren Zeichen kann es durchaus möglich sein, dass diesen in zukünftigen PHP-Versionen eine Bedeutung zukommt. Beim Maskieren sollte darauf geachtet werden, einfache Anführungszeichen zu benutzen, damit Zeichenfolgen wie zum Beispiel \n zu keinem Zeilenumbruch führen.
Beispiel #4 date()-Formatierungen
<?php
// Angenommen, heute ist der 10. März 2001, 17:16:18 Uhr und wir
// befinden uns in der Zeitzone Mountain Standard Time (MST)
$heute = date("F j, Y, g:i a"); // March 10, 2001, 5:16 pm
$heute = date("m.d.y"); // 03.10.01
$heute = date("j, n, Y"); // 10, 3, 2001
$heute = date("Ymd"); // 20010310
$heute = date('h-i-s, j-m-y, it is w Day'); // 05-16-18, 10-03-01, 1631 1618 6 Satpm01
$heute = date('\i\t \i\s \t\h\e jS \d\a\y.'); // it is the 10th day.
$heute = date("D M j G:i:s T Y"); // Sat Mar 10 17:16:18 MST 2001
$heute = date('H:m:s \m \i\s\ \m\o\n\t\h'); // 17:03:18 m is month
$heute = date("H:i:s"); // 17:16:18
$heute = date("Y-m-d H:i:s"); // 2001-03-10 17:16:18 (Das MySQL DATETIME Format)
?>
Um Datumsangaben in anderen Sprachen auszugeben, kann IntlDateFormatter::format() statt date() verwendet werden.
Anmerkungen
Hinweis:
Um einen Zeitstempel aus einer Textrepräsentation eines Datums zu erzeugen, kann die Funktion strtotime() verwendet werden. Einige Datenbanken haben außerdem Funktionen, mit denen ihre Datumsformate in Zeitstempel konvertiert werden können (wie z.B. die Funktion » UNIX_TIMESTAMP von MySQL).
Der Zeitstempel des Verarbeitungsbeginns der HTTP-Anfrage wird in $_SERVER['REQUEST_TIME'] bereitgestellt.
Siehe auch
- DateTimeImmutable::__construct() - Liefert ein neues DateTimeImmutable-Objekt
- DateTimeInterface::format() - Liefert das Datum formatiert gemäß dem angegebenen Format
- gmdate() - Formatiert eine GMT/UTC Zeit-/Datumsangabe
- idate() - Formatiert ein lokales Datum/eine lokale Uhrzeit als Integer
- getdate() - Liefert Datums- und Zeitinformationen
- getlastmod() - Liefert die Uhrzeit der letzten Änderung eines Skripts
- mktime() - Liefert den Unix-Zeitstempel für ein Datum
- IntlDateFormatter::format() - Format the date/time value as a string
- time() - Liefert den aktuellen Unix-Zeitstempel
- Vordefinierte DateTime-Konstanten