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;
}
}