问题:把两个日期存放到ArrayList中,不包含周六周日的一段代码,用Calendar处理的,会出现时间混乱问题。请哪位高手指教。下面为代码。或者不用calendar处理,怎么实现?
public  ArrayList getNoWeek(String bDateStr,String eDateStr){   ArrayList result =  new ArrayList();
  注:DateUtil类为转换日期类型;
  if(bDateStr.length()==10){
  Date begin = DateUtil.StringToDate1(bDateStr);
  Date end = DateUtil.StringToDate1(eDateStr);
    
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(begin);
    
        while(!end.before(calendar.getTime())){
            int type = calendar.get(Calendar.DAY_OF_WEEK);
            Date _date = calendar.getTime();
            if(type == 1 || type == 7){
            }else{
            
                result.add(_date);
            }
            calendar.add(Calendar.DATE,1);
        }
  }

        return result;
    }
  

解决方案 »

  1.   

        ArrayList   result   =     new   ArrayList<Date>(); 不知道你的混乱是什么意思,但是显然你的List最好用泛型
      

  2.   

    public static ArrayList getNoWeek(String bDateStr, String eDateStr) {
            ArrayList result = new ArrayList();
            if (bDateStr.length() == 10) {
                // Date begin = DateUtil.StringToDate1(bDateStr);
                // Date end = DateUtil.StringToDate1(eDateStr);
                Date begin = new Date(bDateStr);
                Date end = new Date(eDateStr);
                Calendar calendar = Calendar.getInstance();
                calendar.setTime(begin);            while (!end.before(calendar.getTime())) {
                    int type = calendar.get(Calendar.DAY_OF_WEEK);
                    Date _date = calendar.getTime();
                    if (type == 1 || type == 7) {
                    } else {                    result.add(_date);
                    }
                    calendar.add(Calendar.DATE, 1);
                }
            }        return result;
        }    public static void main(String[] args) {
            String bDateStr = "2007/10/31";
            String eDateStr = "2007/11/05";
            List lst = new ArrayList();
            lst = getNoWeek(bDateStr, eDateStr);
            for (int i = 0; i < lst.size(); i++) {
                System.out.println(lst.get(i));
            }
        }
    稍微修改了一下,不知道是不是lz想要的。