$time1 = strtotime('23:56');
$time2 = strtotime('00:21');
echo ($time1 - $time2)/60;
予想される o/p は.しかし、25
それは戻ります1415
;
私が変われば
$time2= strtotime('24:21');
- が返されますが25
、これは部分的に正しいです (負の値が返されるため)。
時差を分単位で計算する他の関数を教えてください。
ありがとう :)
strtotime を時間のみで使用すると、現在の日付がかかります。
$time1 = strtotime('23:56'); // 2012-12-06 23:56
$time2 = strtotime('00:21'); // 2012-12-06 00:21
echo ($time1 - $time2)/60;
これは、日を指定していないためです。つまり、00:21 が今日の始まりで、23:56 が今日の終わりです。
1415 は 23 時間の差です。
$time2
は 以上である必要があると仮定し$time1
ます。$time2
次に、それに応じて調整します。
例 1 -- 同日
$time1 = strtotime('00:21');
$time2 = strtotime('23:56');
if($time2 < $time1) {
$time2 += 24 * 60 * 60;
}
echo ($time2 - $time1) / 60; // 1415
例 2 -- 日が繰り越される
$time1 = strtotime('23:56');
$time2 = strtotime('00:21');
if($time2 < $time1) {
$time2 += 24 * 60 * 60;
}
echo ($time2 - $time1) / 60; // 25
php の答えは正しいのですが、翌日のことを考えていることをどのように知る必要がありますか? 1440 (1 日の分) から値を差し引くだけで、目的の結果が得られます...
期待される出力は ではありません25
。遅い時間から早い時間を差し引いています。午後 11 時 56 分 ~ 午前 0 時 21 分はほぼ 24 時間 (または 1440 分) です。
あなたの結果は1415
まさに期待通りです。
タイムスタンプを保存して$temp
日付関数を使用できます
$time1 = timestamp;
$time2 = timestamp;
$temp = $time1 - $time2;
echo date("F j Y i:s",$temp);