1
resposta

Exercício 02

import java.time.LocalDate;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;

public class Exercicios {
    public static void main(String[] args) {
        LocalDate dataAtual = LocalDate.now();
        LocalTime horarioAtual = LocalTime.now();

        DateTimeFormatter formatoData = DateTimeFormatter.ofPattern("dd/MM/yyyy");
        DateTimeFormatter formatoHora = DateTimeFormatter.ofPattern("hh:mm");
        System.out.println("Data formatada: " + dataAtual.format(formatoData));
        System.out.println("Hora formatada: " + horarioAtual.format(formatoHora));
    }
}
1 resposta

Olá, Bernardo. Como vai?

Parabéns pela resolução do Exercício 2! O seu código está muito bem estruturado e focado no objetivo de gerar saídas amigáveis para relatórios, o que é uma necessidade constante na rotina de quem trabalha com gestão financeira e de orçamentos.

A separação em LocalDate (apenas data) e LocalTime (apenas horário) foi uma excelente escolha arquitetural, pois o Java trata cada uma dessas dimensões do tempo com classes otimizadas e específicas. Você também aplicou perfeitamente o padrão de barras ("dd/MM/yyyy") para a data, que é o formato oficial e ideal para documentos no Brasil.

Para agregar ainda mais valor aos seus estudos e dar continuidade ao refinamento que conversamos nos exercícios anteriores, separei uma correção crítica de lógica e uma sugestão de otimização de código:

1. Correção: O perigo do formato de 12 horas em relatórios

No seu DateTimeFormatter para o horário, você definiu o padrão como "hh:mm" com as letras h minúsculas:

DateTimeFormatter formatoHora = DateTimeFormatter.ofPattern("hh:mm");

Como estamos na sexta-feira à noite e o relógio agora marca exatamente 20:39, se você executar o seu programa neste momento, a saída na tela será: Hora formatada: 08:39.

Para um relatório corporativo ou financeiro, omitir se o registro aconteceu às 8 da manhã ou às 8 da noite (20h) pode causar grandes problemas de auditoria. Para forçar o Java a utilizar o relógio no padrão de 24 horas (exibindo 20:39), você deve obrigatoriamente utilizar as letras H maiúsculas:

// Modificando para o formato padrão de 24 horas
DateTimeFormatter formatoHora = DateTimeFormatter.ofPattern("HH:mm");

2. Otimização: Que tal usar apenas uma classe?

O seu código funciona muito bem separando os objetos. Porém, se o objetivo do relatório é carimbar o momento exato em que um evento aconteceu (Data + Hora simultaneamente), o Java possui uma classe nativa perfeita para unificar essas duas informações de forma mais elegante: a LocalDateTime.

Utilizando a LocalDateTime, você precisa gerenciar apenas uma variável e um único formatador. Veja como o seu código poderia ser simplificado mantendo a mesma robustez:

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public class Exercicios {
    public static void main(String[] args) {
        // Captura a Data e a Hora do sistema de uma única vez
        LocalDateTime agora = LocalDateTime.now();

        // Um único formatador integrado com o padrão brasileiro e 24h
        DateTimeFormatter formatoRelatorio = DateTimeFormatter.ofPattern("dd/MM/yyyy às HH:mm");

        // Resultado elegante em uma única linha de impressão
        System.out.println("Relatório gerado em: " + agora.format(formatoRelatorio));
    }
}

Dessa forma, a sua saída ficaria perfeitamente legível e profissional:
Relatório gerado em: 22/05/2026 às 20:39

Você está progredindo muito rápido nessa trilha de manipulação de tempo do Java. Continue mantendo esse foco excelente!

Espero que possa ter lhe ajudado!