[php] DateInterval 형식에서 ‘P’는 무엇을 의미합니까?

DateTime에 대한 PHP 매뉴얼 에서 인용 한 다음 예제를 고려하십시오.

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

‘D’는 날을 나타내는데, 그 형식에서 ‘P’는 무엇을 의미합니까?



답변

에서 수동

간격 사양.

형식은 “마침표”를 나타내는 문자 P로 시작합니다. 각 기간 기간은 정수 값과 기간 지정자로 표시됩니다. 기간에 시간 요소가 포함 된 경우 사양의 해당 부분 앞에 문자 T가옵니다.


답변

‘P’는 기간을 나타냅니다. 여기 http://php.net/manual/en/dateinterval.construct.php 참조


답변

좀 더 자세하게 대답 할 수 있다고 생각합니다. 우선 DateInterval생성자 메서드 $interval_spec는 문자열 이라는 이름의 매개 변수를 취 합니다.

DateInterval::__construct ( string $interval_spec )

이 매개 변수에는 다음과 같은 사양이 있습니다.

형식은 마침표를 나타내는 문자 P로 시작합니다. 각 기간 기간은 정수 값과 기간 지정자로 표시됩니다. 기간에 시간 요소가 포함 된 경우 사양의 해당 부분 앞에 문자 T가옵니다.

인수에 사용되는 몇 가지 기간 지정자가 있습니다.

  • Y 에 대한
  • M 에 대한 개월
  • D 에 대한
  • W 에 대한 . 이들은 일로 변환되므로 D와 결합 할 수 없습니다.
  • H 를위한 시간
  • M 에 대한
  • S 에 대한

기간 지정자를 사용한 몇 가지 예를 살펴 보겠습니다.

  • 이틀은 P2D입니다.
  • 2 초는 PT2S입니다.
  • 6 년 5 분은 P6YT5M입니다.

문서에 설명 된대로 유지해야하는 순서가 있습니다.

단위 유형은 왼쪽의 가장 큰 눈금 단위에서 오른쪽의 가장 작은 눈금 단위까지 입력해야합니다. 따라서 몇 년 전, 몇 달 전, 몇 분 전 등. 따라서 1 년 4 일은 P4D1Y가 아니라 P1Y4D로 표시되어야합니다.

사양은 datetime으로 표시 될 수도 있습니다 .

  • 1 년, 2 개월, 4 일은 P0001-02-04T00 : 00 : 00입니다.

그러나이 형식의 값은 주어진 기간의 롤오버 포인트를 초과 할 수 없습니다 (예 : 25 시간은 유효하지 않음).


답변