获取2个日期之间的日期

2014-11-24 09:26:37 · 作者: · 浏览: 3

[java]
/**
* 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");

正确的是下面的这个方法:

[java]
/**
* 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;
}
}