在最近的项目中,有这么一个需求,根据开始时间、结束时间得到两个时间段内所有的日期,以下分享我的代码给大家。
1、以下的这个方法适用于jdk1.5以上的版本
/***根据开始时间和结束时间返回时间段内的时间集合*@parambeginDate*@paramendDate*@returnList*/@SuppressWarnings("unchecked")publicstaticListgetDatesBetweenTwoDate(DatebeginDate,DateendDate){ListlDate=newArrayList();lDate.add(beginDate);//把开始时间加入集合Calendarcal=Calendar.getInstance();//使用给定的Date设置此Calendar的时间cal.setTime(beginDate);booleanbContinue=true;while(bContinue){//根据日历的规则,为给定的日历字段添加或减去指定的时间量cal.add(Calendar.DAY_OF_MONTH,1);//测试此日期是否在指定日期之后if(endDate.after(cal.getTime())){lDate.add(cal.getTime());}else{break;}}lDate.add(endDate);//把结束时间加入集合returnlDate;}
2、以下的方法适用于jdk1.4以下的版本
/***根据开始时间和结束时间返回时间段内的时间集合*@parambeginDate*@paramendDate*@returnList*/publicstaticListgetDatesBetweenTwoDate(DatebeginDate,DateendDate){ListlDate=newArrayList();lDate.add(beginDate);//把开始时间加入集合Calendarcal=Calendar.getInstance();//使用给定的Date设置此Calendar的时间cal.setTime(beginDate);booleanbContinue=true;while(bContinue){//根据日历的规则,为给定的日历字段添加或减去指定的时间量cal.add(Calendar.DAY_OF_MONTH,1);//测试此日期是否在指定日期之后if(endDate.after(cal.getTime())){lDate.add(cal.getTime());}else{break;}}lDate.add(endDate);//把结束时间加入集合returnlDate;}
3、调用测试
publicstaticvoidmain(String[]args)throwsException{System.out.println("jdk1.6测试");Calendarcal=Calendar.getInstance();Stringstart="-01-03";Stringend="-03-05";SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-dd");DatedBegin=sdf.parse(start);DatedEnd=sdf.parse(end);ListlistDate=getDatesBetweenTwoDate(dBegin,dEnd);for(Datedate:listDate){System.out.println(sdf.format(date));}System.out.println("jdk1.4测试");ListlDate=getDatesBetweenTwoDate(dBegin,dEnd);for(inti=0;iDatedate=(Date)lDate.get(i);System.out.println(sdf.format(date));}}
java方法 返回两个日期内的所有date集合 根据开始时间 结束时间得到两个时间段内所有的日期...