JAVA获取当日期前/后某个月的所有日期

 /**
     * 获取当日期前/后某个月的所有日期  0表示当前月   负数表示前多少月  正数表示后多少月
     * @param month
     * @return
     */
    public static List<Date> getDayListOfMonth(Integer months){
         SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
        List<Date> list = new ArrayList<>();
        Calendar aCalendar = Calendar.getInstance(Locale.CHINA);
        aCalendar.set(aCalendar.MONTH, months+1);
        int year = aCalendar.get(Calendar.YEAR);//年份
        int month = aCalendar.get(Calendar.MONTH)+1;//月份
        int day = aCalendar.getActualMaximum(Calendar.DATE);
        for (int i = 1; i <= day; i++) {
            String aDate = String.valueOf(year)+"-"+month+"-"+i;
            Date parse = null;
                try {
                    parse = simpleDateFormat.parse(aDate);
                } catch (ParseException e) {
                    e.printStackTrace();
                }
            list.add(parse);
        }
        return list;
    }

获取两个日期间相差的天数

 /**
     * java获取两个日期之间相差的天数
     * @param date1
     * @param date2
     * @return
     */
    public static Integer getMonth(Date date1, Date date2){
         Calendar c1 = Calendar.getInstance();  
         Calendar c2 = Calendar.getInstance();  
         c1.setTime(date1);  
         c2.setTime(date2);  
         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);  
         // 获取年的差值 假设 date1 = 2015-8-16  date2 = 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
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值