java中计算两个Date日期相差的月份

介绍

在Java中使用Date对象,计算两个日期相差的月份

示例代码

import java.util.Calendar;
import java.util.Date;
 
public class DateUtils {
 
    public static int monthsBetween(Date startDate, Date endDate) {
        Calendar startCalendar = Calendar.getInstance();
        startCalendar.setTime(startDate);
        Calendar endCalendar = Calendar.getInstance();
        endCalendar.setTime(endDate);
 
        // 确保 startCalendar 的日期在 endCalendar 之前
        if (startCalendar.after(endCalendar)) {
            Calendar temp = startCalendar;
            startCalendar = endCalendar;
            endCalendar = temp;
        }
 
        int months = endCalendar.get(Calendar.MONTH) - startCalendar.get(Calendar.MONTH);
        int years = endCalendar.get(Calendar.YEAR) - startCalendar.get(Calendar.YEAR);
 
        // 如果年份差不为0,则从月份差中减去(年份差 * 12)
        return months - years * 12;
    }
 
    public static void main(String[] args) {
        // 示例:计算两个日期之间的月份差
        Date date1 = new Date(); // 当前日期
        // 假设有一个日期,比如 2023-01-01
        Date date2 = new Date(); // 需要替换为实际日期
 
        int months = monthsBetween(date1, date2);
        System.out.println("Months between dates: " + months);
    }
}