hutool DateUtilmonthBetween 源码
以下是hutool中DateUtil类的monthBetween()方法的源码:
/**
* 计算两个日期相差的月数,不足一个月的按一个月计算<br>
* 如果d1 < 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,返回相差月数的绝对值,否则直接返回相差月数
原文地址: https://www.cveoy.top/t/topic/fuU9 著作权归作者所有。请勿转载和采集!