提问者:小点点

负时间计算


如果我在PHP中加上1小时35分钟,减去4小时,剩下的时间是-3小时30分钟。

但正确的答案是-2小时30分钟。哪里错了?

$sql = "SELECT minutes FROM positiveTime WHERE user=:user";
    if ($stmt = $pdo->prepare($sql)) {
        $stmt->execute(array(
            ':user' => $user
        ));
    }
    $minutes = null;
    while ($z = $stmt->fetch()) {
        $minutes += $z['minutes'];
    }

    $sql = "SELECT minutes FROM negativeTime WHERE user=:user";
    if ($stmt = $pdo->prepare($sql)) {
        $stmt->execute(array(
            ':user' => $user
        ));
        $negativeTime = null;
        while ($z = $stmt->fetch()) {
            $negativeTime += $z['minutes'];
        }
    }
    $minutes = $minutes - $negativeTime;

    echo (floor($minutes / 60)) . " hours and " . ($minutes - floor($minutes / 60) * 60) . " minutes";

共1个答案

匿名用户

$分钟-地板($分钟/60)为正。所以你得到的是-3小时加30分钟,也就是-2:30。

您需要以不同的方式对待$min的正值和负值,以便小时和分钟都是与零的距离。使用abs()函数将时间转换为正,执行计算,然后将小时显示为负数,如果$min的原始值为负数。

$sign = $minutes < 0 ? '-' : '';
$minutes = abs($minutes);
$hours = floor($minutes / 60);
$minutes = $minutes % 60;

echo "$sign$hours hours and $minutes minutes";