Wofür steht 'P' im DateInterval-Format?


82

Betrachten Sie das folgende Beispiel aus dem 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' ist für Tage, wofür steht das 'P' in dieser Formatierung?

Antworten:


121

Aus dem Handbuch

Intervallspezifikation.

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


24

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


10
Das ist verrückt, so viele Beispiele verwenden, Paber diese Referenz ist so untertrieben. Ich vermuten , es Zeitraum gemeint , und ich war auf der Suche php.netnach diesem Wort, ich natürlich nie an der Konstruktor Seite bekam .. Aber es ist nicht verwiesen auf date_format, DateTime::diff, DateTime::format, DateInterval, und eine Vielzahl von allgemeinen Date/TimeFunktionen. Ich wollte wissen, ob es noch andere Präfixe gab, über die ich Bescheid wissen musste, und verdammt sein, wenn ich sie finden konnte, bis ich zum
Stapeltausch

9

Ich denke, es kann genauer beantwortet werden. Zunächst verwendet die DateIntervalKonstruktormethode einen Parameter namens $interval_specstring.

DateInterval::__construct ( string $interval_spec )

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

Das Format beginnt mit dem Buchstaben P für den Zeitraum. Jede Dauerperiode wird durch einen ganzzahligen Wert gefolgt von einem Periodenbezeichner dargestellt. Wenn die Dauer Zeitelemente enthält, wird diesem Teil der Spezifikation der Buchstabe T vorangestellt.

Es gibt einige Periodenbezeichner, die im Argument verwendet werden:

  • Y seit Jahren
  • M seit Monaten
  • D für Tage
  • W seit Wochen . Diese werden in Tage umgewandelt und können daher nicht mit D kombiniert werden.
  • H für Stunden
  • M für Minuten
  • S für Sekunden

Sehen wir uns ein Beispiel mit Periodenbezeichnern an:

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

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

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

Die Spezifikation kann auch als Datum / Uhrzeit dargestellt werden .

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

Die Werte in diesem Format dürfen jedoch den Rollover-Punkt eines bestimmten Zeitraums nicht überschreiten (z. B. 25 Stunden sind ungültig).

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.