GOW

GOW

sábado, 9 de agosto de 2025

COMPARAR MESES - JAVA

 import java.util.Date;

import java.time.ZoneId;

import java.time.LocalDate;
import java.time.Month;

public class CompararMeses {
    public static void main(String[] args) {
        Date dataHoraInicio = new Date(); // Exemplo: agora
        Date dataHoraFim = new Date();    // Exemplo: agora também, modifique para testar

        // Convertemos para LocalDate
        LocalDate inicio = dataHoraInicio.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
        LocalDate fim = dataHoraFim.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();

        boolean mesesDiferentes = inicio.getMonthValue() != fim.getMonthValue() || inicio.getYear() != fim.getYear();

        if (mesesDiferentes) {
            System.out.println("Os meses são diferentes.");
        } else {
            System.out.println("Os meses são iguais.");
        }
    }
}


Explicação:

  • .toInstant().atZone(...).toLocalDate() converte o Date para LocalDate, preservando o fuso horário.

  • .getMonthValue() pega o valor numérico do mês (1 a 12).

  • É importante também verificar o ano, porque janeiro de 2024 e janeiro de 2025 têm o mesmo mês, mas são diferentes no tempo.


Alternativa com YearMonth:

Se quiser deixar ainda mais claro que está comparando "mês + ano":

import java.time.YearMonth;

YearMonth ymInicio = YearMonth.from(dataHoraInicio.toInstant().atZone(ZoneId.systemDefault()));
YearMonth ymFim = YearMonth.from(dataHoraFim.toInstant().atZone(ZoneId.systemDefault()));

boolean mesesDiferentes = !ymInicio.equals(ymFim);
Essa abordagem é mais semântica e segura, pois o YearMonth encapsula exatamente o que você precisa.

Nenhum comentário:

Postar um comentário