0
respostas

[Sugestão] Resolução do desafio

Essa foi a maneira que eu encontrei para resolver o desafio do Period.

package br.com.alura;

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

public class Exemplo {
    public static void main(String[] args) {
        //Pega a data atual (no meu caso 14/04/2026)
        LocalDate dataCompra = LocalDate.now();
        
        //Criando uma variável com a data de 30/10/2026 
        LocalDate dataPagamento = LocalDate.parse("2026-10-30");
        
        //Variável Period para pegar a distância de uma data para outra
        Period periodo = Period.between(dataCompra, dataPagamento);

        //Um laço contando quantos meses faltam até a dataPagamento
        for (int i = 0; i < periodo.getMonths(); i++) 
        
            //Adicionando os dias que não foram contados na variável periodo, usando o .getMonth().lenght, que retorna um long, para pegar quantos dias tem o mês. É necessário usar o .isLeapYear() para saber se o ano em questão é bissexto ou não.
            periodo = periodo.plusDays(dataCompra.getMonth().length(dataCompra.isLeapYear()));
            
            //Incrementando o mês de dataCompra para a variável acima receba o total de dias do próximo mês
            dataCompra = dataCompra.plusMonths(1);
        }
        
        //Saída para o teminal mostrando corretamente quantos dias faltam para a dataPagamento (No meu caso a resposta é 199)
        System.out.println("Diferença em dias: " + periodo.getDays());
    }
}