$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(一天中的分钟数)中减去您的值,然后您将获得所需的结果...
预期的输出不是25
。您正在从一天中的较晚时间中减去一天中的早期时间。11:56 PM - 12:21 AM 几乎是 24 小时(或 1440 分钟)。
您的结果1415
正是预期的结果。
您可以保存时间戳$temp
并使用日期功能
$time1 = timestamp;
$time2 = timestamp;
$temp = $time1 - $time2;
echo date("F j Y i:s",$temp);