使用strtotime()计算时差(以小时和分钟计)

时间:2012-12-06 10:23:17

标签: php date datetime

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

预期的o / p为25。但它会返回1415;

如果我改变

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

返回 - 25部分正确(因为它返回负数)。

任何人都可以建议我,其他一些功能要计算 分钟的时差。

谢谢:)

6 个答案:

答案 0 :(得分:9)

如果你只使用当前日期的时间strtotime:

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

答案 1 :(得分:5)

这是因为你没有指定一天,所以00:21是今天的开始,23:56是今天的结束

1415是23小时的差异。

答案 2 :(得分:2)

php的回答是正确的,怎么知道你第二天想到的?只需从1440(一天中的分钟)中减去你的价值,然后你就会得到想要的结果......

答案 3 :(得分:2)

假设$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

答案 4 :(得分:1)

预期输出不是25。你从一天的晚些时候减去一天中的早期时间。上午11:56 - 上午12:21差不多24小时(或1440分钟)。

您的结果是1415,这正是预期的结果。

答案 5 :(得分:0)

您可以保存$temp的时间戳并使用日期功能

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

echo date("F j Y i:s",$temp);