PHP 8.1.20 Released!

Unterstützte Datums- und Zeitformate

Inhaltsverzeichnis

Dieser Abschnitt beschreibt alle verschiedenen Formate in einem BNF-ähnlichen Format, das der Parser von DateTimeImmutable, DateTime, date_create_immutable(), date_create(), date_parse() und strtotime() versteht. Die Formate sind in Abschnitte gegliedert. In den meisten Fällen können Formate aus verschiedenen Abschnitten durch Leerzeichen, Komma oder Punkt getrennt in derselben Zeichenkette für Datum und Uhrzeit verwendet werden. Für jedes der unterstützten Formate werden ein oder mehrere Beispiele sowie eine Beschreibung des Formats angegeben. Bei Formatzeichen in einfachen Anführungszeichen wird nicht zwischen Groß- und Kleinschreibung unterschieden ('t' könnte t oder T sein), bei Zeichen in doppelten Anführungszeichen wird zwischen Groß- und Kleinschreibung unterschieden ("T" ist nur T).

Die Formatierung von DateTimeImmutable- und DateTime-Objekten wird in der Dokumentation zur Methode DateTimeInterface::format() beschrieben.

Es sollten ein paar allgemeine Regeln beachtet werden.

  1. Der Parser erlaubt für jede Einheit (Jahr, Monat, Tag, Stunde, Minute, Sekunde) die gesamte Bandbreite an Werten. Für ein Jahr sind das einfach 4 Ziffern, für einen Monat ist es 0-12, für einen Tag 0-31, für Stunden 0-24 und für Minuten 0-59.
  2. Weil es Datumsangaben gibt, die eine Schaltsekunde enthalten, ist bei Sekunden die 60 erlaubt. PHP implementiert jedoch die Unix-Zeit, bei der "60" keine gültige Sekundenzahl ist, sodass es zu einem Überlauf kommt.
  3. Wenn eine Zahl außerhalb des zulässigen Bereichs liegt, gibt strtotime() false zurück, und DateTimeImmutable::__construct() löst eine Ausnahme aus.
  4. Wenn eine Zeichenkette ein Datum enthält, werden alle Zeitelemente auf 0 zurückgesetzt.
  5. Wenn irgendein Teil einer Zeit in der angegebenen Zeichenkette vorhanden ist, werden alle kleineren Zeitelemente auf 0 zurückgesetzt.
  6. Um den Parser schneller (und universeller) zu machen, führt er keinerlei Prüfungen durch.
  7. Es gibt eine Möglichkeit, zu prüfen, ob ein ungültiges Datum oder eine ungültige Uhrzeit angegeben wurde:

    <?php
    $res
    = date_parse("2015-09-31");
    var_dump($res["warnings"]);
    ?>

    Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

    array(1) {
      [11] =>
      string(27) "The parsed date was invalid"
    }
    

  8. Es ist bereits möglich, die Grenzfälle zu berücksichtigen, aber dafür muss DateTimeImmutable::createFromFormat() mit dem korrekten Format verwendet werden.

    <?php
    $res
    = DateTimeImmutable::createFromFormat("Y-m-d", "2015-09-34");
    var_dump($res);

    Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

    object(DateTimeImmutable)#1 (3) {
      ["date"]=>
      string(26) "2015-10-04 17:24:43.000000"
      ["timezone_type"]=>
      int(3)
      ["timezone"]=>
      string(13) "Europe/London"
    }
    

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top