Java月份间隔

 推荐:取出天数间隔,直接判断  >=30天就是间隔1个月

/**
 * 月份间隔
 *
 * @param date1
 * @param date2
 * @param isSimple  简单模式 默认一个月按30天计算
 * @return
 */
public static long monthInterval(Date date1, Date date2,boolean isSimple) {
    if(isSimple) {
        //getTime 取到是ms   /(1000变成秒 * 60分钟 * 60小时 * 24天)   
        //或者你自己取出间隔天数再判断  (date2.getTime() - date1.getTime()) /(1000L * 60 * 60 * 24)
        return (date2.getTime() - date1.getTime()) /(1000L * 60 * 60 * 24 * 30) ;
    }else {
        boolean compare = (date2.getTime() - date1.getTime()) > 0;
        Date dd1 = compare ? date1 : date2;
        Date dd2 = compare ? date2 : date1;

        Calendar c1 = Calendar.getInstance();
        c1.setTime(dd1);
        Calendar c2 = Calendar.getInstance();
        c2.setTime(dd2);
        //相差年份,比如2年就是24个月
        int yearMonth = (c2.get(Calendar.YEAR) - c1.get(Calendar.YEAR)) * 12;
        //相差月份,这个是不准的,比如  6.30    7.1  直接月份相减是1,但其实只差一天,那判断是否超过一个月,肯定是不超过
        int monthInterval = c2.get(Calendar.MONTH) - c1.get(Calendar.MONTH);
        //天数相差
        int dayInterval = c2.get(Calendar.DATE) - c1.get(Calendar.DATE);
        int dayMoth = dayInterval >= 0 ? 0 : -1;
        return yearMonth + monthInterval + dayMoth;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值