本帖最后由 liuc0317 于 2011-03-07 09:12:58 编辑

解决方案 »

  1.   


    /**
     * 如果当前日期是周六,返回上个月所有的周六的日期
     * 如果当前日期是周日,返回上个月所有的周日的日期
     * 如果当前日期是工作日,返回上个月的所有的工作日的日期
     * @param today 当前日期
     * @return 返回日期的列表
     */
    public List<Date> getLastMonthDate(Date today){
    List<Date> list = new ArrayList<Date>();
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(today);
    calendar.add(Calendar.DAY_OF_YEAR, -1);
    list.add(calendar.getTime());
    int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
    calendar.add(Calendar.MONTH, -1);
    calendar.set(Calendar.DAY_OF_MONTH, 1);
    Date startTime = calendar.getTime();
    calendar.add(Calendar.MONTH,1);
    calendar.add(Calendar.DAY_OF_YEAR,-1);
    Date endTime = calendar.getTime();
    while(endTime.getTime()>=startTime.getTime()){
    calendar.setTime(startTime);
    if(dayOfWeek==1){
    if(calendar.get(Calendar.DAY_OF_WEEK)==1){
    list.add(startTime);
    }
    }else if(dayOfWeek==7){
    if(calendar.get(Calendar.DAY_OF_WEEK)==7){
    list.add(startTime);
    }
    }else if(dayOfWeek<7&&dayOfWeek>1){
    if(calendar.get(Calendar.DAY_OF_WEEK)<7&&calendar.get(Calendar.DAY_OF_WEEK)>1){
    list.add(startTime);
    }
    }
    calendar.add(Calendar.DAY_OF_MONTH, 1);
    startTime = calendar.getTime();
    }
    //System.out.println(list);
    return list;
    }照着改一下就ok
      

  2.   



    String begin="2010-01-01";
    String end="2010-02-12";
    SimpleDateFormat f=new SimpleDateFormat("yyyy-MM-dd");
    Date dBegin=f.parse(begin);
    Date dEnd=f.parse(end);
    for(long i=dBegin.getTime();i<=dEnd.getTime();i+=86400000*2){
    Date d=new Date(i);
    String date=f.format(d);
    System.out.println(date);
    }
      

  3.   


    2L做的可能是不满足你的需求 不过我建议你用Calendar自己写 而不是这种方式