问题描述
如何求任意两个时间段之间的每一天呢。如2008-05-28到2008-06-06之间的2008-05-29,2008-05-30,2008-05-31,2008-06-01,2008-06-02,2008-06-03,2008-06-04,2008-06-05
解决方案
/** * 获得日期字符串数组 * @param calendarType 日期跨度的类型, * */public static Date[] getDateArrays(Date start,Date end ,int calendarType){ArrayList<Date> ret = new ArrayList<Date>();Calendar calendar = Calendar.getInstance();calendar.setTime(start);Date tmpDate = calendar.getTime();long endTime = end.getTime();while(tmpDate.before(end)||tmpDate.getTime() == endTime){ret.add(calendar.getTime());calendar.add(calendarType, 1);tmpDate = calendar.getTime();}Date[] dates = new Date[ret.size()];return ret.toArray(dates);}@Testpublic void getDateArrays2(){Date date = DateUtils.getDate("2008-04-01");Date date2 = DateUtils.getDate("2008-08-01");Date[] strArray = DateUtils.getDateArrays(date, date2, Calendar.DAY_OF_YEAR);for (Date string : strArray) {System.out.println(DateUtils.getDayStr(string));}}
解决方案二:
Start-> Fri Jun 20 09:51:50 CST 2008End-> Mon Jun 30 09:51:50 CST 2008Fri Jun 20 09:51:50 CST 2008Sat Jun 21 09:51:50 CST 2008Sun Jun 22 09:51:50 CST 2008Mon Jun 23 09:51:50 CST 2008Tue Jun 24 09:51:50 CST 2008Wed Jun 25 09:51:50 CST 2008Thu Jun 26 09:51:50 CST 2008Fri Jun 27 09:51:50 CST 2008Sat Jun 28 09:51:50 CST 2008Sun Jun 29 09:51:50 CST 2008
解决方案三:
Date one = new Date();System.out.println("Start-> " + one.toString());Calendar calendarTwo = Calendar.getInstance();calendarTwo.setTime(one);calendarTwo.add(Calendar.DAY_OF_YEAR, 10);Date two = calendarTwo.getTime();System.out.println("End-> " + two.toString());Date temp = one;while (temp.before(two)) {System.out.println(temp.toString());Calendar calendarOne = Calendar.getInstance();calendarOne.setTime(temp);calendarOne.add(Calendar.DAY_OF_YEAR, 1);temp = calendarOne.getTime();}
解决方案四:
参考jdk中文文档 日历类Calendar