W3docs

Datum und Uhrzeit in PHP manipulieren

PHP bietet leistungsstarke Funktionen zur Manipulation von Datum und Uhrzeit. Erfahren Sie, wie Sie DateTime::add() und verwandte Funktionen einsetzen.

PHP ist eine beliebte serverseitige Programmiersprache, die weit verbreitet zur Erstellung dynamischer Webseiten eingesetzt wird. Eine der wichtigsten Funktionen von PHP ist die Möglichkeit, Datum und Uhrzeit zu manipulieren. In diesem Artikel werden wir die verschiedenen Funktionen zur Datums- und Zeitmanipulation in PHP erkunden und zeigen, wie sie Ihren Programmierprozess vereinfachen können.

Datum und Uhrzeit in PHP verstehen

Bevor wir uns mit den verschiedenen Funktionen beschäftigen, die PHP zur Manipulation von Datum und Uhrzeit bereitstellt, sollten wir zunächst verstehen, wie PHP mit Datums- und Zeitangaben umgeht. In PHP werden Datums- und Zeitangaben als Strings dargestellt. Das gebräuchlichste Format für ein Datum ist YYYY-MM-DD, während das gebräuchlichste Format für eine Uhrzeit HH:MM:SS ist.

PHP bietet außerdem eine integrierte Funktion namens date(), mit der Datums- und Zeitangaben auf verschiedene Arten formatiert werden können. Die Funktion date() nimmt zwei Argumente entgegen: einen Formatstring und einen Zeitstempel. Der Formatstring gibt das gewünschte Format für Datum und Uhrzeit an, während der Zeitstempel die zu formatierende Zeit bestimmt.

Zeit zu Datumsangaben addieren in PHP

Die Funktion date() wird hauptsächlich dazu verwendet, Zeitstempel in lesbare Strings zu formatieren. Um Zeitintervalle zu einem Datum zu addieren oder zu subtrahieren, stellt PHP die Klasse DateTime zusammen mit der Methode add() bereit. Die prozedurale Funktion date_add() (die diesem Kapitel seinen Namen gibt) ist ein veralteter Alias für DateTime::add(), aber die objektorientierte Vorgehensweise wird empfohlen.

Hier ist ein Beispiel, wie man mit DateTime::add() einen Tag zu einem bestimmten Datum addiert:

php— editable, runs on the server

In diesem Beispiel erstellen wir ein DateTime-Objekt aus dem anfänglichen Datums-String. Anschließend verwenden wir die Methode add() mit einem DateInterval-Objekt (P1D steht für einen Zeitraum von 1 Tag), um das Datum zu ändern. Schließlich formatieren und geben wir das aktualisierte Datum aus.

Das DateInterval-Format verstehen

Der an DateInterval übergebene String folgt dem ISO 8601-Dauerformat. Er beginnt immer mit dem Buchstaben P (für „period"). Datumsbestandteile kommen zuerst, dann leitet ein optionales T-Trennzeichen die Zeitbestandteile ein:

CodeBedeutung
YJahre
MMonate (vor T)
DTage
TTrennzeichen vor Zeitbestandteilen
HStunden
MMinuten (nach T)
SSekunden

P1Y2M10DT2H30M bedeutet also „1 Jahr, 2 Monate, 10 Tage, 2 Stunden und 30 Minuten". Beachten Sie, dass M vor dem T Monate und nach dem T Minuten bedeutet — dies ist eine häufige Fehlerquelle.

<?php

$date = new DateTime('2022-01-01 00:00:00');
$date->add(new DateInterval('P1Y2M10DT2H30M'));
echo $date->format('Y-m-d H:i:s');
?>

add() verändert das ursprüngliche Objekt

DateTime::add() ändert das Objekt direkt, anstatt ein neues zurückzugeben. Wenn Sie das ursprüngliche Datum beibehalten möchten, verwenden Sie DateTimeImmutable, das bei jeder Operation ein neues Objekt zurückgibt:

<?php

$start = new DateTimeImmutable('2022-03-02');
$next  = $start->add(new DateInterval('P1D'));

echo $start->format('Y-m-d'), "\n"; // unchanged
echo $next->format('Y-m-d'), "\n";  // one day later
?>

Zeit von Datumsangaben subtrahieren

Um ein Datum zurückzusetzen, verwenden Sie die Methode DateTime::sub() mit einem DateInterval. Sie funktioniert genauso wie add(), aber in umgekehrter Richtung:

<?php

$date = new DateTime('2022-03-02');
$date->sub(new DateInterval('P1M')); // subtract one month
echo $date->format('Y-m-d');
?>

Die Differenz zwischen Datumsangaben messen

Um herauszufinden, wie weit zwei Datumsangaben auseinanderliegen, verwenden Sie DateTime::diff() (prozeduraler Alias date_diff()). Es wird ein DateInterval zurückgegeben, das Sie formatieren können:

<?php

$a = new DateTime('2022-01-01');
$b = new DateTime('2022-03-02');
$diff = $a->diff($b);
echo $diff->format('%a days'); // total days between the two dates
?>

Weitere Datums- und Zeitmanipulationsfunktionen in PHP

Zusätzlich zu DateTime::add() bietet PHP noch weitere Funktionen für die Arbeit mit Datums- und Zeitangaben. Einige davon sind:

  • strtotime(): Verarbeitet eine englische textuelle Datumsbeschreibung und gibt einen Unix-Zeitstempel zurück
  • time(): Gibt den aktuellen Unix-Zeitstempel zurück
  • mktime(): Gibt den Unix-Zeitstempel für ein bestimmtes Datum und eine bestimmte Uhrzeit zurück
  • date_modify(): Ändert ein DateTime-Objekt mithilfe eines textuellen relativen Formats (z. B. +1 day)
  • date_sub(): Veralteter prozeduraler Alias für DateTime::sub()
  • date_diff(): Berechnet die Differenz zwischen zwei DateTime-Objekten

Die Verwendung dieser Funktionen zusammen mit DateTime-Methoden kann Ihnen helfen, verschiedene Datums- und Zeitoperationen effizient zu handhaben.

Fazit

In diesem Artikel haben wir untersucht, wie Datums- und Zeitangaben in PHP manipuliert werden. Wir haben klargestellt, dass die Funktion date() zur Formatierung verwendet wird, während das Addieren oder Subtrahieren von Zeit am besten mit der Methode DateTime::add() erledigt wird. Wir haben auch weitere nützliche Funktionen wie strtotime(), mktime() und date_diff() besprochen und festgestellt, dass date_add() ein veralteter prozeduraler Alias ist. Die korrekte Verwendung dieser Werkzeuge hilft Ihnen, Datums- und Zeitoperationen in Ihren PHP-Anwendungen zuverlässig zu verwalten.

Übungen

Übung
Was macht die Funktion date_add() in PHP?
Was macht die Funktion date_add() in PHP?
Was this page helpful?