2
$time1 = strtotime('23:56');
$time2 = strtotime('00:21');
echo ($time1 - $time2)/60;

予想される o/p は.しかし、25それは戻ります1415;

私が変われば

$time2= strtotime('24:21');

- が返されますが25、これは部分的に正しいです (負の値が返されるため)。

時差を分単位で計算する他の関数を教えてください。

ありがとう :)

4

6 に答える 6

11

strtotime を時間のみで使用すると、現在の日付がかかります。

$time1 = strtotime('23:56');  // 2012-12-06 23:56
$time2 = strtotime('00:21');  // 2012-12-06 00:21
echo ($time1 - $time2)/60;
于 2012-12-06T10:29:02.037 に答える
5

これは、日を指定していないためです。つまり、00:21 が今日の始まりで、23:56 が今日の終わりです。

1415 は 23 時間の差です。

于 2012-12-06T10:29:26.480 に答える
4

$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
于 2012-12-06T10:56:37.410 に答える
2

php の答えは正しいのですが、翌日のことを考えていることをどのように知る必要がありますか? 1440 (1 日の分) から値を差し引くだけで、目的の結果が得られます...

于 2012-12-06T10:30:18.560 に答える
1

期待される出力は ではありません25。遅い時間から早い時間を差し引いています。午後 11 時 56 分 ~ 午前 0 時 21 分はほぼ 24 時間 (または 1440 分) です。

あなたの結果は1415まさに期待通りです。

于 2012-12-06T10:30:22.670 に答える
0

タイムスタンプを保存して$temp日付関数を使用できます

 $time1 = timestamp;
$time2 = timestamp;
$temp  = $time1 - $time2;

echo date("F j Y i:s",$temp);
于 2012-12-06T12:08:06.787 に答える