PHP で 2 つの日付を Unix タイムスタンプに変換して時差を秒単位で計算すると、予期しない結果が発生します。
<p>タイトルのとおり、秒単位の違いを見つけて、その秒を日と時間に変換しようとしています。 </p>
<p>同様の質問を読んでフォローした後、今日の日付時刻に必要な時間、日、週、月、または年を追加する関数を作成しました。この部分から正しい結果が得られます。 </p>
<p> ただし、次に 2 つの日付 (開始日と移動日) を Unix タイムスタンプに変換し、両方のタイムスタンプを減算して 2 つの日付の差を秒単位で求め、変換しようとしましたが、期待した結果が得られませんでした。日または分 (/86400 および /3600)。 </p>
<p>これはコードです..</p>
<pre class="brush:php;toolbar:false;"><?php
$dateTimeNow = date();
function dateTimeShift($dateTimeIn, $lengthNum, $lengthWord) {
$shifted = date("Y-m-d H:i:s", strtotime($dateTimeIn." $lengthNum $lengthWord"));
$difference = strtotime($shifted)-strtotime($dateTimeIn);
return $shifted . " <br> " .floor($difference/86400) ."日または " .floor($difference/3600) ."時間";
}
echo dateTimeShift($dateTimeNow, "1", "day");
?></pre>
<p>現在の結果は...</p>
<ブロック引用>
<p>2023-01-04 09:37:51 > 19361 日または 464673 時間</p>
</blockquote>
<p>こうなると予想していました</p>
<ブロック引用>
<p>2023-01-04 09:37:51 > 1 日または 24 時間</p>
</blockquote></p>