Black November

ATÉ 50% OFF

TÁ ACABANDO!

0 dias

0 horas

0 min

0 seg

Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Projeto] Controle de expediente

import java.time.Duration;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.util.Scanner;

public class Principal {
    public static void main(String[] args) {
        Scanner leitura = new Scanner(System.in);

        DateTimeFormatter horaFormatada = DateTimeFormatter.ofPattern("HH:mm");
        System.out.println("Digite o horário de entrada (HH:mm): ");
        LocalTime entrada = LocalTime.parse(leitura.next(), horaFormatada);

        int cargaHoraria = 8;
        LocalTime saidaPrevista = entrada.plusHours(cargaHoraria);
        System.out.println("Horário de saída previsto: " + saidaPrevista.format(horaFormatada));

        System.out.println("Digite o horário de saída (HH:mm): ");
        LocalTime saidaReal = LocalTime.parse(leitura.next(), horaFormatada);

        leitura.close();

        Duration saldoHoras = Duration.between(saidaPrevista, saidaReal);
        long horas = Math.abs(saldoHoras.toHours());
        long minutos = Math.abs(saldoHoras.toMinutesPart());

        String sinal = saldoHoras.isNegative() ? "-" : "+";

        System.out.printf("Saldo de horas: %s%02dh%02dmin", sinal, horas, minutos);
    }
}

Saída:

Digite o horário de entrada (HH:mm): 
08:00
Horário de saída previsto: 16:00
Digite o horário de saída (HH:mm): 
17:30
Saldo de horas: +01h30min

Matricule-se agora e aproveite até 50% OFF

O maior desconto do ano para você evoluir com a maior escola de tecnologia

QUERO APROVEITAR
1 resposta
solução!

Oi, Aline! Como vai?

Agradeço por compartilhar seu código com a comunidade Alura.

Seu projeto ficou bem organizado e usar LocalTime com Duration deixou o cálculo de horas claro e direto. Gostei de como você formatou a saída e tratou o sinal usando isNegative().

Uma dica interessante para o futuro é usar toSeconds() quando precisar de mais precisao no calculo de duração. Veja este exemplo:


let segundos =  Duration.between(inicio, fim).toSeconds();
console.log(segundos);

O código acima calcula a diferença total em segundos entre dois horários.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!