Ir ao conteúdo
  • Cadastre-se

Java somar horas com a condição do dia ser igual


Posts recomendados

Estou a desenvolver um software para controlar as entradas e saídas de funcionários numa empresa, e também o total de horas trabalhadas num dia. Para isso, precisava de somar as horas realizadas da parte da manhã e da parte da tarde, consegui somar isso de forma separada, o que não está errado mas queria juntar os dois valores, a condição seria, quando o dia fosse o mesmo, somar o total de horas da manhã, com o total de horas da tarde.

image.thumb.png.56ce16299824f9e949183ecc2df02099.png

 

 

Deu para entender?

@section('scripts')
<script src="{{ asset('/assets/vendor/air-datepicker/dist/js/datepicker.min.js') }}"></script>
<script src="{{ asset('/assets/vendor/air-datepicker/dist/js/i18n/datepicker.pt.js') }}"></script>

<script type="text/javascript">
    $('#dataTables-example').DataTable({responsive: true,pageLength: 15,lengthChange: false,searching: false,ordering: true});
    $('.airdatepicker').datepicker({ language: 'pt', dateFormat: 'yyyy-mm-dd' });

    // transfer idno
    $('.ui.dropdown.getid').dropdown({ onChange: function(value, text, $selectedItem) {
            $('select[name="employee"] option').each(function() {
                if($(this).val()==value) {var id = $(this).attr('data-id');$('input[name="emp_id"]').val(id);};
            });
        }});

    $('#btnfilter').click(function(event) {
        event.preventDefault();
        var emp_id = $('input[name="emp_id"]').val();
        var date_from = $('#datefrom').val();
        var date_to = $('#dateto').val();
        var url = $("#_url").val();
        var gtr = 0;

        $.ajax({
            url: url + '/get/employee-attendance/', type: 'get', dataType: 'json', data: {id: emp_id, datefrom: date_from, dateto: date_to}, headers: { 'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content') },
            success: function(response) {
                function ConvertSectoDay(gtr) {
                    var day = parseInt(gtr / (24 * 3600));
                    //gtr = gtr % (24 * 3600);
                    var hour = parseInt(gtr / 3600);
                    gtr %= 3600;
                    var minutes = gtr / 60;
                    gtr %= 60;
                    var seconds = gtr;

                    //return day + " " + "dias " + hour + " " + "hours " + minutes.toFixed() + " " + "minutes " + seconds.toFixed() + " " + "segundos ";
                    return hour + " " + "horas " + minutes.toFixed() + " " + "minutos " + seconds.toFixed() + " " + "segundos ";
                }

                showdata(response);

                function showdata(jsonresponse) {
                    var employee = jsonresponse;
                    var tbody = $('#dataTables-example tbody');

                    // clear data and destroy datatable
                    $('#dataTables-example').DataTable().destroy();
                    tbody.children('tr').remove();

                    // append table row data
                    for (var i = 0; i < employee.length; i++) {
                        gtr += +employee[i].totalhours;
                        //gtr += +employee[i].totalhours*60*60;
                        var time_in = employee[i].timein;
                        var t_in = time_in.split(" ");
                        if (employee[i].timeout) {
                            var time_out = employee[i].timeout;
                            var t_out = time_out.split(" ");

                            tbody.append("<tr>"+
                                "<td>"+employee[i].date+"</td>" +
                                "<td>"+employee[i].employee+"</td>" +
                                "<td>"+ t_in[1]+" "+t_in[2] +"</td>" + 
                                "<td>"+ t_out[1]+" "+t_out[2] +"</td>" +
                                "<td>"+employee[i].totalhours+"</td>"+        
                               //"<td><strong>"+gtr.toFixed(2)+"</strong></td>"+
                                "</tr>");

                        } else {
                            tbody.append("<tr>"+
                                "<td>"+employee[i].date+"</td>" +
                                "<td>"+employee[i].employee+"</td>" +
                                "<td>"+ t_in[1]+" "+t_in[2] +"</td>" +
                                "<td>"+ 'no time out' +"</td>" +
                                "<td>"+employee[i].totalhours+"</td>" +
                                "</tr>");
                        }

                  
                       
                    }

                    tbody.append("<tr class='tablefooter'>"+
                        "<td colspan='4'><strong>TOTAL HOURS</strong></td>"+
                        "<td><strong>"+gtr.toFixed(2)+"</strong></td>"+
                        //"<td><strong>"+ConvertSectoDay(gtr)+"</strong></td>"+
                        "<td class='hide'></td>"+
                        "<td class='hide'></td>"+
                        "<td class='hide'></td>"+
                        "<td class='hide'></td>"+
                        "<td class='hide'></td>"+
                        "</tr>");

                    // initialize datatable
                    $('#dataTables-example').DataTable({responsive: true,pageLength: 15,lengthChange: false,searching: false,ordering: false});
                }
            }
        })
    });
</script>
@endsection

 

 

Tenho este código, que faz a soma separadamente da parte da manha e da parte da tarde com a variável "totalhours", soma o "time in" com o "time out".

 

 

Alguma ajuda?

Link para o comentário
Compartilhar em outros sites

Em Java, pode ser feito assim:

import java.time.Duration;
import java.time.LocalDateTime;
import java.time.Month;

public class Scratch {

    public static void main(String[] args) {
        LocalDateTime horaInicioManha = LocalDateTime.of(2022, Month.JANUARY, 1, 8, 0, 0);
        LocalDateTime horaFimManha    = LocalDateTime.of(2022, Month.JANUARY, 1, 12, 0, 0);

        LocalDateTime horaInicioTarde = LocalDateTime.of(2022, Month.JANUARY, 1, 13, 0, 0);
        LocalDateTime horaFimTarde    = LocalDateTime.of(2022, Month.JANUARY, 1, 17, 0, 0);


        int horas = horaFimManha.getHour() - horaInicioManha.getHour() +
                    horaFimTarde.getHour() - horaInicioTarde.getHour();
        System.out.println("horas = " + horas);


        Duration duration = Duration.between(horaInicioManha, horaFimManha)
                                    .plus(Duration.between(horaInicioTarde, horaFimTarde));
        System.out.println("duration = " + duration);
    }
}

 

O código que você postou parece ser JavaScript, aí já não vou conseguir te ajudar.

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!