java计算两个日期的月数差

来源:互联网 发布:网络词语woc是什么意思 编辑:程序博客网 时间:2024/06/17 08:55
/**     *  获取两个日期相差的月数     * @param d1    较大的日期     * @param d2    较小的日期     * @return  如果d1>d2返回 月数差 否则返回0     */    public static int getMonthDiff(Date d1, Date d2) {        Calendar c1 = Calendar.getInstance();        Calendar c2 = Calendar.getInstance();        c1.setTime(d1);        c2.setTime(d2);        if(c1.getTimeInMillis() < c2.getTimeInMillis()) return 0;        int year1 = c1.get(Calendar.YEAR);        int year2 = c2.get(Calendar.YEAR);        int month1 = c1.get(Calendar.MONTH);        int month2 = c2.get(Calendar.MONTH);        int day1 = c1.get(Calendar.DAY_OF_MONTH);        int day2 = c2.get(Calendar.DAY_OF_MONTH);        // 获取年的差值 假设 d1 = 2015-8-16  d2 = 2011-9-30        int yearInterval = year1 - year2;        // 如果 d1的 月-日 小于 d2的 月-日 那么 yearInterval-- 这样就得到了相差的年数        if(month1 < month2 || month1 == month2 && day1 < day2) yearInterval --;        // 获取月数差值        int monthInterval =  (month1 + 12) - month2  ;        if(day1 < day2) monthInterval --;        monthInterval %= 12;        return yearInterval * 12 + monthInterval;    }

0 0