给两个时间:起始日期和终止日期,比如2008-12-25 2009-01-10,求一函数,把它的月数列出来,要可以跨年。
得出下面结果:
2008-10-25至2008-10-31   
2008-11-01至2008-11-30   
2008-12-01至2008-12-31   
2009-01-01至2009-01-31   
2009-02-01至2009-02-28
2009-03-01至2009-03-10

解决方案 »

  1.   


    private static void printYearMonth(String start, String end) throws Exception {
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    Date s = sdf.parse(start);
    Date e = sdf.parse(end);
    Calendar cals = Calendar.getInstance();
    cals.setTime(s);
    Calendar cale = Calendar.getInstance();
    cale.setTime(e);
    StringBuffer sb = new StringBuffer();
    while (cals.before(cale)) {
    sb.append(sdf.format(cals.getTime()));
    sb.append("至");
    cals.set(Calendar.DATE, 1);
    cals.add(Calendar.MONTH, 1);
    if (cals.after(cale)) {
    cals = cale;
    sb.append(sdf.format(cals.getTime()) + "\n");
    break;
    }
    cals.add(Calendar.DATE, -1);
    sb.append(sdf.format(cals.getTime()) + "\n");
    cals.add(Calendar.DATE, 1); }
    System.out.print(sb.toString());
    }
      

  2.   


    public static void main(String[] args) throws Exception { String start = "2008-11-25";
    String end = "2009-03-10"; printYearMonth(start, end);
    }