1
resposta

CONVERTER/EXPRESSAR PERIODO EM QUANTIDADE DE DIAS

Por favor, o codigo da sequencia define um periodo. Ai eu faço...

    System.out.println(periodo);

... e ele devolve P78Y1M8D

Tem com expressar esse resultado em dias?

obrigado

LocalDate agora = LocalDate.now();
LocalDate dataFutura = LocalDate.of(2099, Month.JANUARY, 25);

Period periodo = Period.between(agora, dataFutura);
1 resposta

Existem duas maneiras de fazer isso. Note que o método getDays retorna apenas os dias excedentes dos anos e meses, logo não será o resultado correto.

A primeira maneira funciona em versões mais antigas do Java, antes do Java 8, mas é mais imprecisa por não levar em conta os anos bissextos nem meses com duração diferente de 30 dias, por isso é só uma quebra galho, não recomendo. É assim:

    public static void main(String[] args) {
        LocalDate agora = LocalDate.now();
        LocalDate dataFutura = LocalDate.of(2099, Month.JANUARY, 25);

        Period periodo = Period.between(agora, dataFutura);

        long anos = periodo.getYears();
        long meses = periodo.getMonths();
        long dias = periodo.getDays();

        long total = anos*365 + meses*30 + dias;

        System.out.println(total);
    }

A outra versão muito mais rebuscada foi introduzida no Java 8, essa sim é perfeita, não há erros no cálculo. É assim:

    public static void main(String[] args) {
        LocalDate agora = LocalDate.now();
        LocalDate dataFutura = LocalDate.of(2099, Month.JANUARY, 25);

        long dias = ChronoUnit.DAYS.between(agora, dataFutura);

        System.out.println(dias);
    }

Note que essa segunda versão despreza a instância da classe Period.

Espero ter ajudado. Se essa resposta respondeu sua dúvida favor marcá-la como solução, para facilitar outras pessoas a chegarem na resposta.