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