DateInterval::__construct
新しい DateInterval オブジェクトを作成する
&reftitle.description;
public DateInterval::__construct
stringduration
新しい DateInterval オブジェクトを作成します。
&reftitle.parameters;
duration
間隔。
最初は P から始まります。これは
period
を表します。
間隔の単位は、整数値の後に間隔指示子をつけて表します。
時間の要素を含む場合は、時間部分の前に文字
T を入れます。
duration の間隔指示子
間隔指示子
説明
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;
DateInterval
オブジェクトを作成して使う例
add($interval);
// Convert interval to string
echo $interval->format("%d");
]]>
&example.outputs;
DateInterval の例
&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