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; <function>DateTimeImmutable::diff</function> の例 &style.oop; diff($target); echo $interval->format('%R%a days'); ]]> &example.outputs; &style.procedural; format('%R%a days'); ]]> &example.outputs; 夏時間の切り替え期間中の <methodname>DateTimeInterface::diff</methodname> の動き diff($targetTime); echo $interval->format("%H:%I:%S (Full days: %a)"), "\n"; ]]> &example.outputs; <methodname>DateTimeInterface::diff</methodname> range このメソッドが返す値は、 $this から $targetObject までの範囲から取得した正確な時間です。 よって、(うるう年でない場合) 1月1日から12月31日までを比較すると、 365 ではなく、364 が返ってきます。 diff($targetTime); echo "Full days: ", $interval->format("%a"), "\n"; ]]> &example.outputs; <classname>DateTime</classname> オブジェクトの比較 DateTimeImmutableDateTime オブジェクトは、 比較演算子 で比較することもできます。 $date2); ]]> &example.outputs; &reftitle.seealso; DateInterval::format DateTime::add DateTime::sub