DateInterval::__construct 新しい DateInterval オブジェクトを作成する &reftitle.description; public DateInterval::__construct stringduration 新しい DateInterval オブジェクトを作成します。 &reftitle.parameters; duration 間隔。 最初は P から始まります。これは period を表します。 間隔の単位は、整数値の後に間隔指示子をつけて表します。 時間の要素を含む場合は、時間部分の前に文字 T を入れます。 <parameter>duration</parameter> の間隔指示子 間隔指示子 説明 Y M D W 週。日付に変換されます。 PHP 8.0.0 より前のバージョンでは、 D と組み合わせて使えませんでした。 H 時間 M S
いくつか簡単な例を示しましょう。 P2D は 2 日、 PT2S は 2 秒、そして P6YT5M は 6 年と 5 分を表します。 複数の単位を指定するときは、 大きな単位を左、小さな単位を右の順に書かなければなりません。 つまり年は月より先、月は日より先、日は分より先などとなります。 1 年と 4 日を表すのは P1Y4D であり、P4D1Y ではありません。 日付と時刻で間隔を指定することもできます。 1 年と 4 日をこの方式で表すと P0001-00-04T00:00:00 のようになります。 しかし、この方式では繰り返し単位以上の値を指定することはできません (たとえば 25 時間などとは指定できません)。 これらのフォーマットは ISO 8601 duration specification に基づくものです。
&reftitle.errors; duration が間隔の値としてパースできない場合、 DateMalformedIntervalStringException がスローされます。 PHP 8.3 より前のバージョンでは、Exception がスローされていました。 &reftitle.changelog; &Version; &Description; 8.3.0 Exception の代わりに、 DateMalformedIntervalStringException がスローされるようになりました。 8.2.0 アクセス可能なプロパティは y から f, invert, days だけになりました。 新しい boolean プロパティ from_string もアクセス可能です。 8.0.0 W が、D と組み合わせて使えるようになりました。 &reftitle.examples; <classname>DateInterval</classname> オブジェクトを作成して使う例 add($interval); // Convert interval to string echo $interval->format("%d"); ]]> &example.outputs; <classname>DateInterval</classname> の例 &example.outputs.82; int(0) ["m"]=> int(0) ["d"]=> int(9) ["h"]=> int(0) ["i"]=> int(0) ["s"]=> int(0) ["f"]=> float(0) ["invert"]=> int(0) ["days"]=> bool(false) ["from_string"]=> bool(false) } ]]> &example.outputs.8; int(0) ["m"]=> int(0) ["d"]=> int(9) ["h"]=> int(0) ["i"]=> int(0) ["s"]=> int(0) ["f"]=> float(0) ["weekday"]=> int(0) ["weekday_behavior"]=> int(0) ["first_last_day_of"]=> int(0) ["invert"]=> int(0) ["days"]=> bool(false) ["special_type"]=> int(0) ["special_amount"]=> int(0) ["have_weekday_relative"]=> int(0) ["have_special_relative"]=> int(0) } ]]> &example.outputs.7; int(0) ["m"]=> int(0) ["d"]=> int(2) ["h"]=> int(0) ["i"]=> int(0) ["s"]=> int(0) ["f"]=> float(0) ["weekday"]=> int(0) ["weekday_behavior"]=> int(0) ["first_last_day_of"]=> int(0) ["invert"]=> int(0) ["days"]=> bool(false) ["special_type"]=> int(0) ["special_amount"]=> int(0) ["have_weekday_relative"]=> int(0) ["have_special_relative"]=> int(0) } ]]> &reftitle.seealso; DateInterval::format DateTime::add DateTime::sub DateTime::diff