Sie haben JavaScript deaktiviert. Vermutlich sind Sie ein Kollege und wollen nur sehen, ob meine Website auch ohne JavaScript funktioniert.
Andernfalls: Bitte aktivieren Sie JavaScript!

webdesign weisshart Startseite

zurück zum Standard-Style

Datum formatieren mit PHP

Hinweis:
Dieser Artikel ist älter als 18 Monate / wurde seit 18 Monaten nicht aktualisiert. Dies kann (muss aber nicht) dazu führen, dass der Artikel, und / oder darin beschriebene Techniken, nicht mehr aktuell sind. Bitte berücksichtigen Sie diesen Hinweis bei der Lektüre.

Symbolbild

Tipps rund um die Datumsanzeige für PHP-Coder

Das Datum wird auf meinen Seiten generell *) in der Form
"Wochentagsname, Tag. Monatsname Jahr"
angezeigt. Weil ich finde, dass es in dieser Form am schnellsten erfasst wird. (Ja, man kann und darf diesbezüglich anderer Meinung sein. Aber auch dann gilt das im Folgenden Beschriebene.)

So weit, so gut. Was aber, wenn das Datum von einem PHP-Script generiert wird?

Bei der Arbeit mit PHP liegt ein Datum häufig als Unix-Timestamp vor. Der Unix-Timestamp gibt die Anzahl der Sekunden an, die seit dem 1. Januar 1970 vergangen sind. Nein, niemand muss den Timestamp selbst ausrechnen — obwohl das natürlich möglich wäre: Achtung! Schaltjahre berücksichtigen! :-)

Viele PHP-Funktionen erzeugen das Datum als Timestamp. So wird zum Beispiel das Änderungdatum einer Datei mittels filemtime("Dateiname") als Timestamp ausgegeben.

Man kann mittels PHP einen Timestamp auch aus einem Datums-String, einem in lesbarer Form vorliegenden Datum, erzeugen. Eine einfache Funktion für diesen Zweck ist "strtotime".
Beispiel:
echo strtotime("28.04.2017");
erzeugt den Timestamp 1492639200.

Und wie wird nun aus 28.04.2017 bzw. dem entsprechenden Timestamp das von mir bevorzugte Format
"Wochentagsname, Tag. Monatsname Jahr"?
Ganz einfach: strftime (Format,[Timestamp])
Beispiel:
setlocale(LC_TIME, "de_DE.UTF-8");
echo strftime("%A, %d. %B %Y");
gibt den heutigen Tag aus, z.B.: Samstag, 26. August 2023
(setlocale, aufgerufen vor strftime, stellt die richtige / gewünschte Sprache für Wochentags- und Monatsnamen ein.)

Auch die Kombination von strftime und strtotime ist natürlich möglich. Das Datum in Kurzschreibweise eingeben, und formatiert ausgeben:
Beispiel:
$mein_datum = "28.04.2017";
echo strftime("%A, %d. %B %Y", strtotime($mein_datum));
erzeugt: Freitag, 28. April 2017

Nachtrag 22.10.2017

Um auf den kleinen Monitoren von Smartphones Platz zu sparen, zeige ich dort das Datum wieder in der Kurzform TT.MM.YYYY an.

Nachtrag 05.12.2021

strftime ist ab PHP 8.1 deprecated, und wird ab PHP 9 entfernt. Danke an Alexander für den Kommentar.
Auf https://php.watch/ wird die Ersatz-Funktion vorgestellt. Aus obigem Beispiel wird dann:

$formatter = new IntlDateFormatter('de_DE', IntlDateFormatter::FULL, IntlDateFormatter::NONE); $mein_datum = "28.03.2017"; echo $formatter->format(strtotime($mein_datum));

Da ich strftime auf sehr vielen Seiten und auch Tools einsetze, steht da noch etwas Handarbeit an. Zum Glück ist noch etwas Zeit bis PHP 9.

Creative Commons Lizenzvertrag

Artikeltexte und Code-Snippets: Creative Commons CC BY-SA 4.0
Medien (Bilder, Videos, Audios) sind evtl. urheberrechtlich geschützt.

3 Kommentare

  1. Alexander schrieb am Sonntag, 05.12.21 11:09 Uhr:

    Moin,

    danke für deine Seiten :)

    Kleine Rückmeldung: Die Funktion strftime ist seit PHP 8.1.0 DEPRECATED (veraltet). Von der Verwendung dieser Funktion wird dringend abgeraten.

    Grüße

    Alexander

    https://www.php.net/manual/de/function.strftime.php

  2. Andreas schrieb am Mittwoch, 02.03.22 19:25 Uhr:

    Hallo, ich brauche Hilfe fürgenau den gegensätzlichen Weg. Ich möchte 02. März 2022 in 2022-03-02 konvertieren. Das Ausgangsformat liegt als $datum vor und wurde per $_POST übergeben.
    Grüße aus dem Norden

  3. Fritz schrieb am Mittwoch, 02.03.22 21:35 Uhr:

    $datum = '02. März 2022';


    $de = array("Januar","Februar","März","Mai","Juni","Juli",
    "Oktober","Dezember");
    $eng = array("January","February","March","May","June","July",
    "October","December");
    $datum = str_replace($de, $eng, $datum);


    $timestamp = strtotime($datum);
    echo $tag = date('Y-m-d', $timestamp);

Über Ihren Kommentar zu diesem Artikel freue ich mich.
Wenn Sie aber Fragen haben, und eine Antwort erwarten, nutzen Sie bitte das Supportforum! Die Nutzung des Forums ist auch ohne Registrierung möglich.

? Anweisungen zur Eingabe von BB Code Wenn Javascript verfügbar ist, können Sie die obigen Schaltflächen zum Einfügen der folgenden Steuercodes verwenden (an der Cursorposition oder um gegebenenfalls markierten Text):

[b]als wichtig <strong>[/b] hervorgehobener Text
[c]Quellcode[/c] oder optisch hervorgehobenes Zitat