「P」はDateInterval形式で何を表しますか?


83

DateTimeのphpマニュアルから引用した次の例を考えてみましょう

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

「D」は数日間ですが、そのフォーマットで「P」は何を表していますか?

回答:


123

マニュアル

間隔の指定。

形式は、「ピリオド」を表す文字Pで始まります。各期間は整数値とそれに続く期間指定子で表されます。期間に時間要素が含まれている場合、仕様のその部分の前には文字Tが付きます。


24

「P」は期間を表します。ここを参照してくださいhttp://php.net/manual/en/dateinterval.construct.php


11
それはクレイジーで、非常に多くの例が使用されてPいますが、その参照は非常に控えめです。私はそれが期間を意味推測し、私が探していたphp.netその言葉のために、私は明らかに、コンストラクタのページへのやったことがなかった..しかし、それは上で参照されていないdate_formatDateTime::diffDateTime::formatDateInterval一般の、およびホストDate/Time機能。知っておくべき他のプレフィックスがあるかどうかを知りたいと思っていましたが、スタック交換に来るまでそれを見つけることができた場合は気になります
Madivad 2017

9

もっと詳しく答えられると思います。まず、DateIntervalコンストラクターメソッド$interval_specは文字列という名前の1つのパラメーターを取ります。

DateInterval::__construct ( string $interval_spec )

このパラメーターの仕様は次のとおりです。

形式は、ピリオドの文字Pで始まります。各期間は整数値とそれに続く期間指定子で表されます。期間に時間要素が含まれている場合、仕様のその部分の前には文字Tが付きます。

引数で使用されるいくつかの期間指定子があります。

  • Yのための
  • Mのためのヶ月
  • Dのための
  • Wのための。これらは日数に変換されるため、Dと組み合わせることはできません。
  • Hのための時間
  • Mのための
  • S

期間指定子を使用したいくつかの例を見てみましょう。

  • 2日はP2Dです。
  • 2秒はPT2Sです。
  • 6年5分はP6YT5Mです。

ドキュメントに記載されているように維持する必要がある順序があります:

単位タイプは、左側の最大スケール単位から右側の最小スケール単位まで入力する必要があります。したがって、数年前、数か月前、数日前、数分前などです。したがって、1年4日は、P4D1YではなくP1Y4Dとして表す必要があります。

仕様は、日時として表すこともできます。

  • 1年、2か月、4日はP0001-02-04T00:00:00になります

ただし、この形式の値は、特定の期間のロールオーバーポイントを超えることはできません(たとえば、25時間は無効です)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.