相对来说比较准确。
Java代码
1./**
2. * 获得两个日期(字符串)之间的所有日期
3. *
4. * @param start_date
5. * String 开始日期 EX:"20120101" 强制输入参数
6. * @param end_date
7. * String 结束日期 EX:"20120102" 强制输入参数
8. * @return
9. */
10. public static List<String> getDatesBetween2Date(String start_date, String end_date) {
11. List<String> result = new ArrayList<String>();
12. try {
13. start_date = StringUtils.trim(start_date);
14. end_date = StringUtils.trim(end_date);
15. if (StringUtils.isEmpty(start_date) || StringUtils.isEmpty(end_date)) {
16. return result;
17. }
18.
19. SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
20. int recAfter = diffDate(sdf.parse(end_date), sdf.parse(start_date));
21. if (recAfter < 0) {
22. String temp = start_date;
23. start_date = end_date;
24. end_date = temp;
25. recAfter = -1 * recAfter;
26. }
27. result.add(start_date);
28. String tempStart_date = new String(start_date.getBytes("UTF-8"), "UTF-8");
29. while (recAfter > 0) {
30. tempStart_date = DateUtil.turnDate(tempStart_date, "yyyyMMdd", 1);
31. result.add(tempStart_date);
32. recAfter--;
33. }
34.
35. }
36. catch (Exception e) {
37. e.printStackTrace();
38. }
39. return result;
40. }
46. public static String turnDate(String showDate, String format, int interDay) {
47. // 日期加指定天数
48. Calendar cal = Calendar.getInstance();
49. Date tempDate_001 = DateUtil.parseDate(showDate, format);
50. if (null == tempDate_001) {
51. return null;
52. }
53. cal.setTime(tempDate_001);
54. cal.add(Calendar.DAY_OF_MONTH, interDay);
55. String next = DateUtil.formatDate(cal.getTime(), format);
56. return next;
57. }
/**
* 获得两个日期(字符串)之间的所有日期
*
* @param start_date
* String 开始日期 EX:"20120101" 强制输入参数
* @param end_date
* String 结束日期 EX:"20120102" 强制输入参数
* @return
*/
public static List<String> getDatesBetween2Date(String start_date, String end_date) {
List<String> result = new ArrayList<String>();
try {
start_date = StringUtils.trim(start_date);
end_date = StringUtils.trim(end_date);
if (StringUtils.isEmpty(start_date) || StringUtils.isEmpty(end_date)) {
return result;
}
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
int recAfter = diffDate(sdf.parse(end_date), sdf.parse(start_date));
if (recAfter < 0) {
String temp = start_date;
start_date = end_date;
end_date = temp;
recAfter = -1 * recAfter;
}
result.add(start_date);
String tempStart_date = new String(start_date.getBytes("UTF-8"), "UTF-8");
while (recAfter > 0) {
tempStart_date = DateUtil.turnDate(tempStart_date, "yyyyMMdd", 1);
result.add(tempStart_date);
recAfter--;
}
}
catch (Exception e) {
e.printStackTrace();
}
return result;
}
public static String turnDate(String showDate, String format, int interDay) {
// 日期加指定天数
Calendar cal = Calendar.getInstance();
Date tempDate_001 = DateUtil.parseDate(showDate, format);
if (null == tempDate_001) {
return null;
}
cal.setTime(tempDate_001);
cal.add(Calendar.DAY_OF_MONTH, interDay);
String next = DateUtil.formatDate(cal.getTime(), format);
return next;
}
写个main方法调用:
Java代码
1.System.out.println(DateUtil.getDatesBetween2Date("20120101", "20120104"));
System.out.println(DateUtil.getDatesBetween2Date("20120101", "20120104"));
返回的是一个 list集合: 20120101、 20120102 、 20120103、 20120101 这样的集合。