1
resposta

[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());
    }
}
1 resposta

Olá, Mateus! Como vai?

Primeiramente, seja bem-vindo à Alura! 💙

E parabéns por explorar o nosso fórum, isso contribui demais para o seu aprendizado.

Agora, avaliando a sua atividade: observei que você explorou o Period para calcular intervalos de tempo com Java, utilizou muito bem o laço for para ajustar os dias mês a mês e ainda compreendeu a importância da LocalDate para manipular datas de forma precisa.

Uma dica interessante para o futuro é aplicar o método ChronoUnit.DAYS.between() para simplificar o cálculo da diferença em dias entre duas datas. Assim:

import java.time.LocalDate;
import java.time.temporal.ChronoUnit;

public class Exemplo {
    public static void main(String[] args) {
        LocalDate dataCompra = LocalDate.now();
        LocalDate dataPagamento = LocalDate.parse("2026-10-30");

        long diferencaDias = ChronoUnit.DAYS.between(dataCompra, dataPagamento);

        System.out.println("Diferença em dias: " + diferencaDias);
    }
}

Isso faz com que o cálculo seja direto e sem necessidade de ajustes manuais.

Conteúdos relacionados

Alguns materiais podem estar em inglês, mas é possível compreendê-los usando o recurso de tradução de páginas do próprio navegador.

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

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