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(一天中的分钟数)中减去您的值,然后您将获得所需的结果...

于 2012-12-06T10:30:18.560 回答
1

预期的输出不是25。您正在从一天中的较晚时间中减去一天中的早期时间。11:56 PM - 12:21 AM 几乎是 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 回答