java方法,返回两个日期内的所有date集合,根据开始时间、结束时间得到两个时间段内所有的日期...
本站寻求有缘人接手,详细了解请联系站长QQ1493399855
在最近的项目中,有这么一个需求,根据开始时间、结束时间得到两个时间段内所有的日期,以下分享我的代码给大家。
1、以下的这个方法适用于jdk1.5以上的版本
- /**
- * 根据开始时间和结束时间返回时间段内的时间集合
- * @param beginDate
- * @param endDate
- * @return List
- */
- @SuppressWarnings("unchecked")
- public static List getDatesBetweenTwoDate(Date beginDate, Date endDate) {
- List lDate = new ArrayList();
- lDate.add(beginDate);//把开始时间加入集合
- Calendar cal = Calendar.getInstance();
- //使用给定的 Date 设置此 Calendar 的时间
- cal.setTime(beginDate);
- boolean bContinue = true;
- while (bContinue) {
- //根据日历的规则,为给定的日历字段添加或减去指定的时间量
- cal.add(Calendar.DAY_OF_MONTH, 1);
- // 测试此日期是否在指定日期之后
- if (endDate.after(cal.getTime())) {
- lDate.add(cal.getTime());
- } else {
- break;
- }
- }
- lDate.add(endDate);//把结束时间加入集合
- return lDate;
- }
2、以下的方法适用于jdk1.4以下的版本
- /**
- * 根据开始时间和结束时间返回时间段内的时间集合
- * @param beginDate
- * @param endDate
- * @return List
- */
- public static List getDatesBetweenTwoDate(Date beginDate, Date endDate) {
- List lDate = new ArrayList();
- lDate.add(beginDate);//把开始时间加入集合
- Calendar cal = Calendar.getInstance();
- //使用给定的 Date 设置此 Calendar 的时间
- cal.setTime(beginDate);
- boolean bContinue = true;
- while (bContinue) {
- //根据日历的规则,为给定的日历字段添加或减去指定的时间量
- cal.add(Calendar.DAY_OF_MONTH, 1);
- // 测试此日期是否在指定日期之后
- if (endDate.after(cal.getTime())) {
- lDate.add(cal.getTime());
- } else {
- break;
- }
- }
- lDate.add(endDate);//把结束时间加入集合
- return lDate;
- }
3、调用测试
- public static void main(String[] args)throws Exception{
- System.out.println("jdk1.6测试");
- Calendar cal = Calendar.getInstance();
- String start = "2012-01-03";
- String end = "2012-03-05";
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
- Date dBegin =sdf.parse(start);
- Date dEnd = sdf.parse(end);
- List listDate = getDatesBetweenTwoDate(dBegin, dEnd);
- for(Date date:listDate){
- System.out.println(sdf.format(date));
- }
- System.out.println("jdk1.4测试");
- List lDate = getDatesBetweenTwoDate(dBegin, dEnd);
- for(int i=0;i Date date = (Date)lDate.get(i);
- System.out.println(sdf.format(date));
- }
- }