Co oznacza „P” w formacie DateInterval?

82

Rozważmy następujący przykład cytowany z podręcznika php dla DateTime

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

„D” oznacza dni, co oznacza „P” w tym formatowaniu?

Shrinath
źródło

Odpowiedzi:

122

Z instrukcji

Specyfikacja interwału.

Format zaczyna się od litery P, oznaczającej „kropkę”. Każdy okres trwania jest reprezentowany przez wartość całkowitą, po której następuje oznaczenie okresu. Jeśli czas trwania zawiera elementy czasu, ta część specyfikacji jest poprzedzona literą T.

Phil
źródło
24

„P” oznacza okres. zobacz tutaj http://php.net/manual/en/dateinterval.construct.php

Jawa
źródło
10
To szalone, tak wiele przykładów używa, Pale to odniesienie jest tak zaniżone. Domyślałem oznaczało to okres i szukałem php.netdla tego słowa, ja oczywiście nigdy nie dostał do strony konstruktora .. Ale to nie jest określany na date_format, DateTime::diff, DateTime::format, DateInterval, oraz szereg ogólnych Date/Timefunkcji. Chciałem wiedzieć, czy są jakieś inne prefiksy, o których warto wiedzieć i niech mnie diabli, gdybym mógł je znaleźć, dopóki nie
przyjdę
9

Myślę, że można na nie odpowiedzieć bardziej szczegółowo. Po pierwsze, DateIntervalmetoda konstruktora przyjmuje jeden parametr o nazwie $interval_specłańcuch.

DateInterval::__construct ( string $interval_spec )

Ten parametr ma specyfikację opisaną poniżej:

Format zaczyna się od litery P oznaczającej kropkę. Każdy okres trwania jest reprezentowany przez wartość całkowitą, po której następuje oznaczenie okresu. Jeśli czas trwania zawiera elementy czasu, ta część specyfikacji jest poprzedzona literą T.

Istnieje kilka oznaczeń okresu, które są używane w argumencie:

  • Y od lat
  • M od miesięcy
  • D przez kilka dni
  • W od tygodni . Są one przeliczane na dni, więc nie można ich łączyć z D.
  • H przez wiele godzin
  • M przez minuty
  • S przez kilka sekund

Zobaczmy przykład z użyciem wskaźników okresu:

  • Dwa dni to P2D.
  • Dwie sekundy to PT2S.
  • Sześć lat i pięć minut to P6YT5M.

Istnieje kolejność, którą należy zachować zgodnie z opisem w dokumencie:

Typy jednostek należy wprowadzać od największej jednostki skali po lewej do najmniejszej jednostki skali po prawej stronie. Tak więc lata przed miesiącami, miesiące przed dniami, dni przed minutami, itd. Zatem jeden rok i cztery dni muszą być przedstawione jako P1Y4D, a nie P4D1Y.

Specyfikację można również przedstawić jako datę i godzinę .

  • Rok, dwa miesiące, cztery dni to P0001-02-04T00: 00: 00

Ale wartości w tym formacie nie mogą przekroczyć punktu kumulacji z danego okresu (np. 25 godzin jest nieprawidłowe).

Unlexo
źródło