/**
数据库同步表数据迁移用到的一个小算法。
获取两个日期之间的所有日期并将其存储进List返回。(参考资料来自网络)
*/
public class TestDateUtil {
static String dateFormat = "yyyy-MM-dd";
static SimpleDateFormat format = new SimpleDateFormat(dateFormat);
/**
* 1获取两个日期之间所有的日期
*/
public static ArrayList days(String date1, String date2) {
ArrayList L = new ArrayList();
if (date1.equals(date2)) {
L.add(date1);
return L;
}
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;
L.add(date1); //包含起始时间
while (tmp.compareTo(date2) < 0) {
L.add(tmp);
num++;
tmp = format.format(str2Date(tmp).getTime() + 3600 * 24 * 1000);
}
L.add(date2); //包含结束时间
if (num == 0){
return L;
}
return L;
}
/**
* 2辅助方法
*/
private static Date str2Date(String str) {
if (str == null)
return null;
try {
return format.parse(str);
} catch (ParseException e) {
e.printStackTrace();
}
return null;
}
//test
public static void main(String[] args) {
List list = days( "2014-11-22","2014-11-21");
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}
}