Como calcular os meses entre 2 datas

Bom dia, queria calcular os meses entre 2 datas, mas não faço a menor ideia de como fazer, até pesquisei varias formas, mas sem êxito.
Gostaria de fazer a entrada de uma data com o Scanner, exemplo:01/03/2021 e 01/09/2021 contar os meses entre eles e imprimir na tela.

Aqui tem 2 exemplos, veja se são adequados para o que vc precisa:

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.util.Scanner;

public class Main {
  private static final Scanner scan = new Scanner(System.in);

  private static final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/uuuu");

  private static void jeitoSimples() {
    final String a = scan.nextLine().split("/")[1];
    final String b = scan.nextLine().split("/")[1];
    final int x = Integer.parseInt(a);
    final int y = Integer.parseInt(b);
    System.out.println(y - x);
  }

  private static void usandoLocalDate() {
    final LocalDate a = LocalDate.parse(scan.nextLine(), formatter);
    final LocalDate b = LocalDate.parse(scan.nextLine(), formatter);
    final long value = ChronoUnit.MONTHS.between(a, b);
    System.out.println(value);
  }

  public static void main(String... args) {
    jeitoSimples();
    usandoLocalDate();
  }
}

Lembrando que o jeitoSimples só “funciona” se as datas estiverem no mesmo ano (na verdade ele também funciona para qualquer string que tenha números na posição correta, mesmo se não forem datas - por exemplo, se a string for "afdafadsf/99/xyz" vai pegar o “mês” 99).

Usar DateTimeFormatter é melhor porque se as datas estiverem no formato errado, ou com dados incorretos (mês 13, letras, etc), ele dá erro. E também garante que vai funcionar se as datas estiverem em anos diferentes.

1 curtida