Php 计算时间超过30分钟的错误时间

Php 计算时间超过30分钟的错误时间,php,time,calculator,Php,Time,Calculator,我有一个有点奇怪的问题,我有这个代码和输出它总是增加一个小时以上,如果第二次有30分钟或以上 $time1 = '12:00'; $time2 = '13:30'; list($hours, $minutes) = explode(':', $time1); $startTimestamp = mktime($hours, $minutes); list($hours, $minutes) = explode(':', $time2); $endTimestamp = mktime($hour

我有一个有点奇怪的问题,我有这个代码和输出它总是增加一个小时以上,如果第二次有30分钟或以上

$time1 = '12:00';
$time2 = '13:30';
list($hours, $minutes) = explode(':', $time1);
$startTimestamp = mktime($hours, $minutes);

list($hours, $minutes) = explode(':', $time2);
$endTimestamp = mktime($hours, $minutes);

$seconds = $endTimestamp - $startTimestamp;
$minutes = ($seconds / 60) % 60;
$hours = round($seconds / (60 * 60));

这里发生了什么?

记住数学。将间隔[0.5;1]中的所有内容四舍五入等于1

round(0.5) = 1

这就是为什么在[30;60]中,以分钟为单位,你有+1小时的原因。

记住数学。在[0.5;1]的间隔内,将所有内容四舍五入等于1

round(0.5) = 1

这就是为什么在[30;60]中以分钟为单位有+1小时的原因。

而不是使用
round
使用
intval
作为
$seconds/(60*60)
表达式总是返回一个浮点,我们只需要该结果的整数部分,而不是使用
round
使用
intval
作为
$seconds/(60*60)
表达式总是返回一个浮点值,我们只需要该结果的整数部分

结果是什么,假设是什么?01:30小时,但它是2:30。结果是什么,假设是什么?01:30小时,但它是2:30。@middaparka-$seconds/(60*60)表达式总是返回一个浮点,我们只需要结果的整数部分。是的,我同意,这是一个懒惰的答案。@middaparka-$seconds/(60*60)表达式总是返回一个浮点,我们只需要结果的整数部分。是的,我同意,这是一个懒惰的答案。好的,谢谢,我看到了错误。我应该用intval来代替它?好的,谢谢,我看到了错误。我应该用intval来代替它吗?