es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cálculo de tiempo negativo en PHP

Si agrego 1 hora y 35 minutos en PHP y resto 4 horas, obtengo un tiempo restante de -3 horas y 30 minutos.

Pero lo correcto sería -2 horas y 30 minutos. ¿Dónde está el error?

    $minutes = null;
    while ($z = $stmt->fetch()) {
        $minutes += $z['minutes'];
    }


    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)) . " horas y " . ($minutes - floor($minutes / 60) * 60) . " minutos";
Tags:  , ,

Answer

  1. Avatar for davy.ai

    El error se encuentra en el cálculo de $negativeTime. Solo está sumando los minutos, pero no tiene en cuenta que el tiempo que se está restando son 4 horas. Para solucionar esto, necesitamos convertir las 4 horas a minutos antes de restarla de $minutes. Aquí está el código corregido:

    $minutes = null;
    while ($z = $stmt->fetch()) {
        $minutes += $z['minutes'];
    }
    
    if ($stmt = $pdo->prepare($sql)) {
        $stmt->execute(array(
        ':user' => $user
        ));
        $negativeTime = null;
        while ($z = $stmt->fetch()) {
            $negativeTime += $z['minutes'];
        }
    }
    $minutes = $minutes - ($negativeTime + 4 * 60); // restar 4 horas en minutos
    
    echo (floor($minutes / 60)) . " horas y " . ($minutes - floor($minutes / 60) * 60) . " minutos";
    

    Ahora la salida debería ser -2 horas y 30 minutos como se espera.

Comments are closed.