Wofür steht „P“ im DateInterval-Format?

Lesezeit: 2 Minuten

Benutzer-Avatar
Shrinath

Betrachten Sie das folgende zitierte Beispiel php-Handbuch für DateTime

<?php
  $date = new DateTime('2000-01-20');
  $date->sub(new DateInterval('P10D'));
  echo $date->format('Y-m-d') . "\n";
?>

‘D’ steht für Tage, wofür steht das ‘P’ in dieser Formatierung?

Benutzer-Avatar
Phil

Aus das Handbuch

Intervallangabe.

Das Format beginnt mit dem Buchstaben P für „Punkt“. Jede Dauerperiode wird durch einen ganzzahligen Wert dargestellt, gefolgt von einer Periodenbezeichnung. Wenn die Dauer Zeitelemente enthält, wird diesem Teil der Angabe der Buchstabe T vorangestellt.

‘P’ steht für Periode. siehe hier http://php.net/manual/en/dateinterval.construct.php

  • Das ist verrückt, so viele Beispiele verwenden P aber dieser Hinweis ist so untertrieben. Ich vermutete, es bedeutete Punkt und ich suchte php.net Für dieses Wort bin ich offensichtlich nie auf die Konstruktorseite gekommen. Aber es wird nicht darauf verwiesen date_format, DateTime::diff, DateTime::format, DateIntervalund eine Vielzahl von allgemeinen Date/Time Funktionen. Ich wollte wissen, ob es noch andere Präfixe gibt, über die ich Bescheid wissen sollte, und verdammt noch mal, wenn ich sie finden könnte, bis ich zum Stack-Austausch kam

    – Madivad

    23. September 2017 um 11:37 Uhr

Ich denke, es kann ausführlicher beantwortet werden. Zuerst, DateInterval Die Konstruktormethode nimmt einen Parameter mit dem Namen $interval_spec was eine Schnur ist.

DateInterval::__construct ( string $interval_spec )

Dieser Parameter hat eine Spezifikation, die wie folgt beschrieben wird:

Das Format beginnt mit dem Buchstaben P für Punkt. Jede Dauerperiode wird durch einen ganzzahligen Wert dargestellt, gefolgt von einer Periodenbezeichnung. Wenn die Dauer Zeitelemente enthält, wird diesem Teil der Angabe der Buchstabe T vorangestellt.

Es gibt einige Periodenbezeichnungen, die im Argument verwendet werden:

  • Y zum Jahre
  • M zum Monate
  • D zum Tage
  • W zum Wochen. Diese werden in Tage umgerechnet, können also nicht mit D kombiniert werden.
  • H zum Std.
  • M zum Protokoll
  • S zum Sekunden

Sehen wir uns ein Beispiel für die Verwendung von Periodenbezeichnungen an:

  • Zwei Tage ist P2D.
  • Zwei Sekunden sind PT2S.
  • Sechs Jahre und fünf Minuten ist P6YT5M.

Es gibt eine Reihenfolge, die wie im Dokument beschrieben beibehalten werden muss:

Die Einheitentypen müssen von der größten Skaleneinheit links bis zur kleinsten Skaleneinheit rechts eingegeben werden. Also Jahre vor Monaten, Monate vor Tagen, Tage vor Minuten usw. Somit müssen ein Jahr und vier Tage als P1Y4D dargestellt werden, nicht als P4D1Y.

Die Angabe kann auch als datetime dargestellt werden.

  • Ein Jahr, zwei Monate, vier Tage wären P0001-02-04T00:00:00

Aber die Werte in diesem Format können den Übergangspunkt eines bestimmten Zeitraums nicht überschreiten (z. B. 25 Stunden sind ungültig).

1353810cookie-checkWofür steht „P“ im DateInterval-Format?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy