java获取某段时间内每天日期,周起始和结束日期(可自己修改),月日期,月数

/**
* 获取某段时间之间的月份
* @param minDate
* @param maxDate
* @return
* @throws ParseException
*/
public static List<String> getMonthBetween(String minDate, String maxDate) throws ParseException {
List<String> result = new ArrayList<String>();
Date d1 = new SimpleDateFormat("yyyy-MM-dd").parse(minDate);//定义起始日期
                Date d2 = new SimpleDateFormat("yyyy-MM-dd").parse(maxDate);//定义结束日期
                Calendar dd = Calendar.getInstance();//定义日期实例
                dd.setTime(d1);//设置日期起始时间


while(dd.getTime().before(d2)){//判断是否到结束日期


SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
String str = sdf.format(dd.getTime());
result.add(str);
dd.add(Calendar.MONTH, 1);
}
return result;
}
/**
* 计算两个日期间的月数
* @param minDate
* @param maxDate
* @return
* @throws ParseException
*/
public static int getMonthDiff(String minDate, String maxDate) throws ParseException {  
Date d1 = new SimpleDateFormat("yyyy-MM-dd").parse(minDate);//定义起始日期


Date d2 = new SimpleDateFormat("yyyy-MM-dd").parse(maxDate);//定义结束日期

        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;  
    } 
/**
* 获取两个日期之间的所有日期
* @param startDate
* @param endDate
* @return
* @throws ParseException
*/
public static List<String> getBetweenDates(String startDate, String endDate) throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

Date start = new SimpleDateFormat("yyyy-MM-dd").parse(startDate);//定义起始日期
                Date end = new SimpleDateFormat("yyyy-MM-dd").parse(endDate);//定义结束日期

        List<String> result = new ArrayList<String>();
        Calendar tempStart = Calendar.getInstance();
        tempStart.setTime(start);
    
        Calendar tempEnd = Calendar.getInstance();
        tempEnd.setTime(end);
        while (tempStart.before(tempEnd) || tempStart.equals(tempEnd)) {
        result.add(sdf.format(tempStart.getTime()));
        tempStart.add(Calendar.DAY_OF_YEAR, 1);
    }
    return result;
}
/**
* 获取周一和周日的结果集
* @param startDate
* @param endDate
* @return
* @throws ParseException
*/
public static List<Map<String, String>> getBetweenWeeks(String startDate, String endDate) throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date start = sdf.parse(startDate);//定义起始日期
Date end = sdf.parse(endDate);//定义结束日期

        // List<Date> result = new ArrayList<Date>();
        List<Map<String, String>> result = new ArrayList<Map<String, String>>();
        Calendar tempStart = Calendar.getInstance();
        tempStart.setTime(start);
    
        Calendar tempEnd = Calendar.getInstance();
        tempEnd.setTime(end);
        while (tempStart.before(tempEnd) || tempStart.equals(tempEnd)) {
            Map<String, String> map = new HashMap<String,String>();
            int we = tempStart.get(Calendar.DAY_OF_WEEK);
            if ( we == 2) {
                map.put("mon", sdf.format(tempStart.getTime()));
    }
       
            if (map.isEmpty()) { //检测map是否为空
         tempStart.add(Calendar.DAY_OF_YEAR, 1);
            }else {
        tempStart.add(Calendar.DAY_OF_YEAR, 6);
map.put("week", sdf.format(tempStart.getTime()));
result.add(map);
    }
        }
        return result;
}
附:因为我获取的大部分是String,所以输出都是String格式。
这是转换的工具类,不懂可留言
public static String toDateStr(Date date) {
return toDateStr(date, "yyyy-MM-dd");
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值