各位高手们好,假设我现在有两个日期,比如一个是“2009-04”,一个是"2010-05",这两个日期都是用户输入的,有没有好的方法可以获得这两个日期的间隔月数,并可以对日期进行循环处理啊。比如日期如上,我要循环处理2009-04、2009-05、2009-09........一直到2010-05各月份的一些数据

解决方案 »

  1.   


    SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");

    String str1 ="2009-04";
    String str2 ="2010-05";

    Date date1 = sf.parse(str1+"-01");  
    Date date2 = sf.parse(str2+"-01");

    Calendar cal1 = Calendar.getInstance();
    Calendar cal2 = Calendar.getInstance();
    cal1.setTime(date1);
    cal2.setTime(date2);/* while(cal2.compareTo(cal1)>=0) {
    cal1.add(Calendar.DAY_OF_MONTH, 1);   //增加1天
    System.out.println(sf.format(cal1.getTime()));
    }*/
    /* while(cal2.compareTo(cal1)>0) {
    cal1.add(Calendar.MONTH, 1);     //增加1月
    System.out.println(sf.format(cal1.getTime()));
    }*/笨办法,得到月的总数,可以cal.getActualMaximum(Calendar.DAY_OF_MONTH)取每个月的最大天数,再循环。
    注意下边界值.
      

  2.   


       SimpleDateFormat df = new SimpleDateFormat("yyyy-MM");
            java.util.Date now = df.parse("2009-04");
            java.util.Date date = df.parse("2010-05");
            long passtime = date.getTime() - now.getTime();
            long month = passtime / (24 * 60 * 60 * 1000)/30;
            System.out.println("" + month + "月");
      

  3.   

    public  int getMonthNum(Date startTime,Date endTime) {
             Calendar cal1=Calendar.getInstance();
                 cal1.setTime(startTime);
             Calendar cal2=Calendar.getInstance();
                 cal2.setTime(endTime);
               
                return countMonth = (cal2.get(1)-cal1.get(1))*12+(cal2.get(2)-cal1.get(2));
       }
      

  4.   

    java处理日期感觉比。net要麻烦些~我观望下前辈的代码