1
resposta

[Sugestão] Resolução encontrada (Desafio: Data e Hora)

package br.com.alura;

import java.time.*;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;

public class Principal {
    public static void main(String[] args) {
        LocalDate dataCompra = LocalDate.now();
        LocalDate dataPrimeiraParcela = LocalDate.of(2025,5, 15);
        LocalDate dataSegundaParcela = dataPrimeiraParcela.plusDays(30);

        if (dataPrimeiraParcela.isEqual(LocalDate.now())) {
            System.out.println("Hoje é o dia do vencimento");
        } else {
            System.out.println("Ainda não está no dia do vencimento");
        }

        if (dataPrimeiraParcela.isBefore(LocalDate.now())) {
            System.out.println("Anterior é o dia do vencimento");
        } else {
            System.out.println("Superior não está no dia do vencimento");
        }

        System.out.println("Data compra: " + dataCompra);
        System.out.println("Data primeira parcela: " + dataPrimeiraParcela);
        System.out.println("Data segunda parcela: " + dataSegundaParcela);

        DateTimeFormatter formato = DateTimeFormatter.ofPattern("dd/MM/yyyy");
        System.out.println("Data compra formatada: " + dataCompra.format(formato));

        ZonedDateTime dataConclusaoCompra = ZonedDateTime.now();
        System.out.println("Data conclusão compra formatada: " + dataConclusaoCompra);
        ZonedDateTime dataCompraNy = dataConclusaoCompra.withZoneSameInstant(ZoneId.of("America/New_York"));
        System.out.println("Data conclusão compra Ny: " + dataCompraNy);

        LocalTime inicio = LocalTime.of(9,0);
        LocalTime fim = LocalTime.of(17,30);
        Duration duracao = Duration.between(inicio, fim);
        System.out.println("Duração do expediente: " + duracao.toHours() +
                " horas e " + duracao.toMinutesPart() + " minutos.");

        LocalDate dataPagamento = LocalDate.parse("2025-10-30");
        long periodo = ChronoUnit.DAYS.between(dataCompra, dataPagamento);
        System.out.println("Diferença em dias: " + periodo);

    }
}
1 resposta

Oi, Manuela! Como vai?

Gostei da forma como você utilizou diferentes classes da API de data e hora do Java, como LocalDate, ZonedDateTime e Duration. Isso mostra domínio sobre como lidar com prazos, fusos horários e períodos de tempo, algo muito útil em aplicações reais.

Uma dica interessante para o futuro é o uso do método plusMonths() para calcular vencimentos mensais com mais precisão. Veja este exemplo:


LocalDate vencimento = LocalDate.of(2025, 5, 15);
LocalDate proximoVencimento = vencimento.plusMonths(1);
System.out.println("Próximo vencimento: " + proximoVencimento);

Esse código soma um mês à data original, respeitando automaticamente a quantidade de dias de cada mês.

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