以下是hutool中DateUtil类的monthBetween()方法的源码:

/**
 * 计算两个日期相差的月数,不足一个月的按一个月计算<br>
 * 如果d1 &lt; d2,结果为负数
 *
 * @param d1 日期1
 * @param d2 日期2
 * @param isAbs 是否只取相差的月数(取绝对值)
 * @return 相差月数
 */
public static int monthBetween(Date d1, Date d2, boolean isAbs) {
    final Calendar c1 = Calendar.getInstance();
    final Calendar c2 = Calendar.getInstance();
    if (d1.before(d2)) {
        c1.setTime(d1);
        c2.setTime(d2);
    } else {
        c1.setTime(d2);
        c2.setTime(d1);
    }

    int months = (c2.get(Calendar.YEAR) - c1.get(Calendar.YEAR)) * 12 + c2.get(Calendar.MONTH) - c1.get(Calendar.MONTH);

    if (isAbs) {
        return Math.abs(months);
    }
    return months;
}

该方法接收三个参数:两个日期和一个布尔值,用于指定是否只取相差的月数。方法内部先通过Calendar实例获取两个日期的年份和月份,然后计算出相差的月数。如果传入的isAbs为true,返回相差月数的绝对值,否则直接返回相差月数

hutool DateUtilmonthBetween 源码

原文地址: https://www.cveoy.top/t/topic/fuU9 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录