DateTimeInterface::diff
DateTimeImmutable::diff
DateTime::diff
date_diff
ふたつの DateTime オブジェクトの差を返す
&reftitle.description;
&style.oop;
public DateIntervalDateTimeInterface::diff
DateTimeInterfacetargetObject
boolabsolute&false;
public DateIntervalDateTimeImmutable::diff
DateTimeInterfacetargetObject
boolabsolute&false;
public DateIntervalDateTime::diff
DateTimeInterfacetargetObject
boolabsolute&false;
&style.procedural;
DateIntervaldate_diff
DateTimeInterfacebaseObject
DateTimeInterfacetargetObject
boolabsolute&false;
ふたつの DateTime オブジェクトの差を返します。
&reftitle.parameters;
datetime
比較する日付。
absolute
間隔が正の数になるようにするか否か。
&reftitle.returnvalues;
ふたつの日付の差をあらわす DateInterval オブジェクトを返します。
absolute は、
DateInterval オブジェクトの
invert プロパティにのみ影響します。
さらに厳密に言うと、戻り値はもともとのオブジェクト
($this または
$originObject) を
$targetObject にするために適用すべき経過時間の差分を示しています。
このプロセスは可逆とは限りません。
このメソッドは夏時間の切り替えを認識するため、
24 hours and 30 minutes
という時間差を返す可能性があります。
以下で例示するサンプルコードでそれを示します。
完全な時間差を計算したい場合、
$this/$baseObject と
$targetObject をUTC に変換する必要があります。
&reftitle.examples;
DateTimeImmutable::diff の例
&style.oop;
diff($target);
echo $interval->format('%R%a days');
]]>
&example.outputs;
&style.procedural;
format('%R%a days');
]]>
&example.outputs;
夏時間の切り替え期間中の DateTimeInterface::diff の動き
diff($targetTime);
echo $interval->format("%H:%I:%S (Full days: %a)"), "\n";
]]>
&example.outputs;
DateTimeInterface::diff range
このメソッドが返す値は、
$this から $targetObject
までの範囲から取得した正確な時間です。
よって、(うるう年でない場合) 1月1日から12月31日までを比較すると、
365 ではなく、364 が返ってきます。
diff($targetTime);
echo "Full days: ", $interval->format("%a"), "\n";
]]>
&example.outputs;
DateTime オブジェクトの比較
DateTimeImmutable と
DateTime オブジェクトは、
比較演算子
で比較することもできます。
$date2);
]]>
&example.outputs;
&reftitle.seealso;
DateInterval::format
DateTime::add
DateTime::sub