Nueva pregunta

Pregunta:

Fecha: 12-11-2019 10:00:36 (En Español)

Restar 45 horas a una variable que tiene 60 horas cargadas[No resuelta]

Hola tengo problemas para restar 45 horas, yo hago una consulta a la BD donde tengo unas horas almacenadas mediante un SELECT SUM sumo todas las horas y me arroja un total de 60 horas ahora en php esas 60 horas la introduzco en una variable este es mi código

  $test="SELECT  SEC_TO_TIME(SUM(TIME_TO_SEC(horas_traba))) suma FROM horarios WHERE nombre='$nombre' and date BETWEEN '$SDATE' AND '$week'";

                $test_result=mysqli_query($conexion, $test);
		$test_row=mysqli_fetch_assoc($test_result);
		$suma=$test_row['suma'];


en la variable suma($suma) tengo almacenado las 60 horas ahora mi proble viene en quiero restarle a esa variale 45 horas y no se como, lleve ambos a segundo y los resto y me da un valor incorrecto
estoy investigando como hacerlo porque las sumas y resta de horas bajas si las hace bien pero valores pasado las 24 horas dan mal los calculos

cualquier ayuda es buena gracias
Etiquetas: Javascript - PHP - PHP Avanzado Votos: 0 - Respuestas: 9 - Vistas: 18 Compartir en: Google Facebook Twitter LinkedIn Link
 

Respuestas:

  • Fecha: 13-11-2019 09:04:04 Hola...
    No pienses el problema cuadradamente...

    La respuesta esta en tu corazón... (Jajajajaja no te creas) has como cuando tienes fracciones con denominadores diferentes... (ya que seguro estas tratando de ocupar restas de horas [máximo 1 día] a un tiempo en horas)

    Pasa el tiempo a segundos (Tiempo total y tiempo restaras) luego al tiempo en segundos del tiempo total (60horas minutos y segundos) le restas los segundos del tiempo restaras (horas minutos y segundos) y los segundos restantes lo conviertes a horas, minutos y segundos, y listo...

    Saludos Terrícola.

    Stryfe™
      Votos: 1 - Link respuesta
     
  • Fecha: 13-11-2019 10:21:38 Hola Gracias por responder, ya busque en mi corazon y nada

    Exactamente eso hice llevo todo a segundo, hago la resta y el resultado lo llevo a horas usando este codigo

    $sql = "SELECT  * FROM horarios WHERE nombre='$nombre' and date BETWEEN '$SDATE' AND '$week'";
      $rs = mysqli_query($conexion,$sql) or die(mysql_error());
      $time_t=0;
    while ($row = mysqli_fetch_assoc($rs)) {
      $time_in=$row['time_in'];
      $time_out=$row['time_out'];
    
      $time_t +=(strtotime($time_out) - strtotime($time_in)) /60 /60;
    }
    
    


    este código funciona con horas baja pero me pasa que me llega a dar un resultado 21,8 horas y allí esta mi problema no me puede dar 21 horas y 80 minutos porque eso no existe, yo hago el calculo manual y me da 21,56 o en caso de error debería 22 horas y algo, pero no debe dar 21 h y 80 minutos no se que puede ser que me este arrojando un mal calculo
      Votos: 0 - Link respuesta
     
  • Fecha: 13-11-2019 13:06:04 21.8 horas = 21 horas 48 minutos

    No entiendo de dónde sacas 80 minutos....
      Votos: 1 - Link respuesta
     
  •  
      1  
     
    Fecha: 13-11-2019 13:26:10 Buenas...
    Prueba con esto, no se si será la forma correcta de hacerlo.

    $t1 = strtotime( '2019-11-30 23:59:06' );
    $t2 = strtotime( '2019-11-28 10:00:06' );
    $horas_min=($t1-$t2)/(60*60);
    echo intval($horas_min).' Horas '.(fmod($horas_min,1)*60).' minutos';
    
    
      Votos: 1 - Link respuesta
     
  • Fecha: 15-11-2019 02:29:26 Tal vez el problema se deba a la forma en que almacenas tus datos. Si el campo 'horas_trabajadas' representa horas, no debía haber problema al restar cualquier cantidad (¿45 son las horas que debe trabajar a la semana y estás calculando horas extras?) aunque debías colocar algún chequeo para que tu resultado no sea negativo. ¿Podrías postear la estructura de tu tabla? (o al menos de los campos relevantes para la consulta)   Votos: 1 - Link respuesta
     
  • Fecha: 15-11-2019 07:32:50 Hola gracias a todos por responder, Ernesto como determinas que 21,8 es 21 horas 48 minutos como llegas a esa hora porque la verdad es bastante aproximada a la hora real   Votos: 0 - Link respuesta
     
  • Fecha: 15-11-2019 08:16:20 Si 01 hora es igual a 60 minutos, entonces 0.8 horas = 0.8 x 60 = 48 minutos   Votos: 2 - Link respuesta
     
  • Fecha: 17-11-2019 13:21:45 ¿Por que no usas directamente objetos tipo DateTimeImmutable?

    Fíjate el método sub
      Votos: 0 - Link respuesta
     
  • Fecha: 28-11-2019 03:02:52 Buenos días, estoy de acuerdo con Mauro, puedes usar la clase DateTime y con el método modify realizar la operación   Votos: 0 - Link respuesta
     
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión
 
frjcbbae garagebible.com