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

Im having a a bit strange problem, Im having this code and on output it adds always one hour more if the second time has 30 or more minutes.

$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));

Whats happening here?

Instead of using round use intval as $seconds / (60 * 60) expression always returns a float and we need only the integer part of that result

Remember the math. Rounding up everything in interval [0.5;1) equals to 1.

round(0.5) = 1

That's why you've +1 hour in case of minutes in [30;60].