2つの日付の間の日付を取得


/**
 * TestDay1.java
 *     (C) 2012 
 *   :cuiran 2012-09-24 10:18:52
 */
package com.wpn.test;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * TODO
 * @author cuiran
 * @version TODO
 */
public class TestDay1 {

	public static void twoDays(String str1,String str2){
	    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
	    Date date1;
	    Date date2;
	    try {
	      date1 = df.parse(str1);
	      date2 = df.parse(str2);
	      int s = (int) ((date2.getTime() - date1.getTime())/ (24 * 60 * 60 * 1000));
	      if(s>0){
	        for(int i = 0;i<=s;i++){
	          long todayDate = date1.getTime() + i * 24 * 60 * 60 * 1000;
	          Date tmDate = new Date(todayDate);
	          /**
	           * yyyy-MM-dd E :2012-09-01    
	           */
	          System.out.println(new SimpleDateFormat("yyyy-MM-dd").format(tmDate));
	        }
	      }
	    } catch (ParseException e) {
	      System.out.println("    ");
	    }
	  }

	/**
	 * TODO
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		TestDay1.twoDays("2012-09-01", "2012-09-24");
	}

}

上の方法に問題があることに注意してください.
呼び出しに問題が発生します.
TestDay1.twoDays("2012-02-01", "2012-02-28");
正しいのは次の方法です.
/**
 * DateTest.java
 *     (C) 2012 
 *   :cuiran 2012-09-24 10:26:29
 */
package com.wpn.test;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * TODO
 * @author cuiran
 * @version TODO
 */
public class DateTest {

	String dateFormat = "yyyy-MM-dd";
	SimpleDateFormat format = new SimpleDateFormat(dateFormat);
	
	public static void main(String[] args) {
		DateTest t = new DateTest();
		
		String date1 = "2012-02-01";
		String date2 = "2012-03-04";
		
		t.process(date1, date2);
	}
	
	private void process(String date1, String date2){
		if(date1.equals(date2)){
		    System.out.println("      !");	
		    return;
		}
		
		String tmp;
		if(date1.compareTo(date2) > 0){  //   date1      date2
			tmp = date1;
			date1 = date2; 
			date2 = tmp;
		}
		
		tmp = format.format(str2Date(date1).getTime() + 3600*24*1000);
		
        int num = 0; 
        while(tmp.compareTo(date2) <0){        	        
        	System.out.println(tmp);    
        	num++;
        	tmp = format.format(str2Date(tmp).getTime() + 3600*24*1000);
        }
        
        if(num == 0)
        	System.out.println("      !");
	}
	
	
	private Date str2Date(String str) {
		if (str == null) return null;
		
		try {
			return format.parse(str);
		} catch (ParseException e) {
			e.printStackTrace();
		}
		return null;
	}
}