您的位置:首页 > 其它

获得两个日期(字符串)之间的所有日期

2013-06-26 18:03 323 查看
在程序中有时候这样的情况就是获取时间段中的时间集合进行处理,这几天做了一个excel导出,根绝时间段查询生成不同的天数标题数据。

相对来说比较准确。

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 这样的集合。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: