在项目要用到,把两个日期之间的所有日期都显示出来.举了例子来说就是
20050101
20050102
20050103
-----
一直到
20050302而且还是跨月份的.有办法吗?

解决方案 »

  1.   

    public static int getDiffDate(java.util.Date date, java.util.Date date1) {
    return (int) ((date.getTime() - date1.getTime()) / (24 * 3600 * 1000));
    }

    public static java.util.Date parseDate(String dateStr, String formatStr) {
    SimpleDateFormat format = new SimpleDateFormat(formatStr);
    try {
    return format.parse(dateStr);
    } catch (ParseException e) {
    e.printStackTrace();
    return null;
    }
    }

    public static Date changeDay(Date date, int offset){
      Calendar calendar = Calendar.getInstance();
      calendar.setTime(date);
      calendar.set(Calendar.DAY_OF_YEAR,(calendar.get(Calendar.DAY_OF_YEAR) + offset));
      return calendar.getTime();
    }

     public static void main(String[] args){
     String fStr = "yyyyMMdd";
     SimpleDateFormat format = new SimpleDateFormat(fStr);
     String d1 = "20050101", d2 = "20050302";
     Date date1 = parseDate(d1, fStr), date2 = parseDate(d2, fStr);
     for(int i = 0; i <= getDiffDate(date2, date1); i++){
     System.out.println(format.format(changeDay(date1, i)));
     }
     }