Вычисление количества месяцев между двумя датами в Java: методы и примеры

Чтобы вычислить количество месяцев между двумя датами в Java, вы можете использовать несколько методов. Вот несколько вариантов:

Метод 1: использование пакета java.time(Java 8 и более поздних версий)

import java.time.LocalDate;
import java.time.Period;
public class MonthCalculator {
    public static void main(String[] args) {
        LocalDate startDate = LocalDate.of(2022, 3, 15);
        LocalDate endDate = LocalDate.of(2023, 7, 20);
        Period period = Period.between(startDate, endDate);
        int months = period.getMonths();
        System.out.println("Number of months: " + months);
    }
}

Метод 2: использование библиотеки Joda-Time
Если вы используете более старую версию Java (до Java 8), вы можете использовать библиотеку Joda-Time для расчета количества месяцев между двумя датами. Перед использованием вам необходимо добавить библиотеку Joda-Time в свой проект. Вот пример:

import org.joda.time.DateTime;
import org.joda.time.Months;
public class MonthCalculator {
    public static void main(String[] args) {
        DateTime startDate = new DateTime(2022, 3, 15, 0, 0);
        DateTime endDate = new DateTime(2023, 7, 20, 0, 0);
        int months = Months.monthsBetween(startDate, endDate).getMonths();
        System.out.println("Number of months: " + months);
    }
}

Метод 3: использование класса java.util.Calendar(устаревший подход)
Этот подход считается устаревшим и не рекомендуется для новых разработок. Однако если вы работаете со старой кодовой базой, вам может пригодиться класс java.util.Calendar. Вот пример:

import java.util.Calendar;
public class MonthCalculator {
    public static void main(String[] args) {
        Calendar startDate = Calendar.getInstance();
        startDate.set(2022, 2, 15); // Month is zero-based, so 2 represents March
        Calendar endDate = Calendar.getInstance();
        endDate.set(2023, 6, 20); // Month is zero-based, so 6 represents July
        int months = 0;
        while (!startDate.after(endDate)) {
            startDate.add(Calendar.MONTH, 1);
            months++;
        }
        System.out.println("Number of months: " + months);
    }
}