How to get extra hours in Jquery

0

I have an html with Jquery but I want to get the extra hours with the following code, in my html I have 4 input type="time":

  • for the entry ( ✓ ).
  • for the output ( ✓ ).
  • gets the hours worked ( ✓ ).
  • the extra hours, which would be obtained from the hours worked - the workday of 9 hours a day. ( X )
  • The detail is in what you get the hours but not the minutes, how can I complete my code?

    <script>
        function HorasExtra() {
            var HrsTrabajadas = $("#HrsTrabajadas").val();
            var HrsExtra = 9;  //esto representa una jornada laboral de 9 horas diarias
            var HrsExtraTrabajadas = $("#HrsExtra").val();
    
            var Resultado = parseFloat(HrsTrabajadas) - parseFloat(HrsExtra);
            $("#HrsExtra").val(Resultado);
        }
    

        
    asked by Juan Fernando Dj Jf 30.03.2018 в 08:02
    source

    1 answer

    0

    Well I found the following solution, I hope it works for further consultations, thanks:

    <script>
    function CalcularHorasExtra() {
        var hora_inicio = $('#Jornada').val();
        var hora_final = $('#HrsTrabajadas').val();
    
        // Expresión regular para comprobar formato
        var formatohora = /^([01]?[0-9]|2[0-3]):[0-5][0-9]$/;
    
        // Si algún valor no tiene formato correcto sale
        if (!(hora_inicio.match(formatohora)
              && hora_final.match(formatohora))) {
            return;
        }
    
        // Calcula los minutos de cada hora
        var minutos_inicio = hora_inicio.split(':')
          .reduce((p, c) => parseInt(p) * 60 + parseInt(c));
        var minutos_final = hora_final.split(':')
          .reduce((p, c) => parseInt(p) * 60 + parseInt(c));
    
        // Si la hora final es anterior a la hora inicial sale
        if (minutos_final < minutos_inicio) return;
    
        // Diferencia de minutos
        var diferencia = minutos_final - minutos_inicio;
    
        // Cálculo de horas y minutos de la diferencia
        var horas = Math.floor(diferencia / 60);
        var minutos = diferencia % 60;
    
        $('#HrsExtra').val(horas + ':'
          + (minutos < 10 ? '0' : '') + minutos);
    }
    
    $('#HrsTrabajadas').change(CalcularHorasExtra);
    $('#Salida').change(CalcularHorasExtra);
    CalcularHorasExtra();
    

        
    answered by 04.04.2018 / 20:21
    source