PHP 8.3.4 Released!

date

(PHP 4, PHP 5, PHP 7, PHP 8)

dateFormatiert einen Unix-Zeitstempel

Beschreibung

date(string $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.

Warnung

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.

Hinweis: Die Funktion date() gibt immer 000000 als Mikrosekunden aus, weil sie einen Parameter vom Typ int benötigt, während DateTime::format() Mikrosekunden unterstützt, wenn DateTime mit Mikrosekunden erstellt wurde.

timestamp

Der optionale Parameter timestamp ist ein Unix-Zeitstempel vom Typ int. Falls timestamp nicht übergeben wird oder null ist, wird die aktuelle lokale Zeit als Standardwert verwendet. Er entspricht dann also dem Ergebnis der Funktion time().

Rückgabewerte

Gibt eine formatierte Datums-Zeichenkette zurück.

Fehler/Exceptions

Wenn die Zeitzone ungültig ist, wird bei jedem Aufruf einer Datums/Zeit-Funktion ein Fehler der Stufe E_WARNING erzeugt. 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));

/* Verwenden von 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).

Tipp

Der Zeitstempel des Verarbeitungsbeginns der HTTP-Anfrage wird in $_SERVER['REQUEST_TIME'] bereitgestellt.

Siehe auch

add a note

User Contributed Notes 1 note

up
0
griddstone at outlook dot com
5 days ago
There is a fine distinction between g, G, h, and H. All of them are for the hour of the day, but in four different formats.

g = 12-hour format, no leading zeros
G = 24-hour format, no leading zeros
h = 12-hour format, with leading zeros
H = 24-hour format, with leading zeros

<?php
date
("g:i", mktime(0,0,0,3,13,2024)) // -> 12:00
date("G:i", mktime(8,0,0,3,13,2024)) // -> 8:00
date("h:i", mktime(8,0,0,3,13,2024)) // -> 08:00
date("H:i", mktime(0,0,0,3,13,2024)) // -> 00:00
?>

Essentially, capital letter is 24-hour format, lower case is 12-hour format. 'h' has leading zeros, 'g' does not.
To Top