package unicode;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
/**
* 求两个日期之前的所有日期或日历
*
* @author ben
*
*/
public class CalendarTest {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
public static void main(String[] args) {
System.out.println(getDateList("2014-10-25", "2014-11-12"));
System.out.println(getDates(getCalendar("2014-10-25"), getCalendar("2014-11-12")));
}
/**
* 两个日期之前的所有日期
* @param startDate
* @param endDate
* @return
*/
public static List<String> getDateList(String startDate, String endDate) {
// 日期格式化
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
// 存放结果的集合
List<String> result = new ArrayList<String>();
try {
// 初始化开始日期
Calendar p_start =getCalendar(startDate);
// 初始化结束日期
Calendar p_end = getCalendar(endDate);
// 中间变量,开始指向开始日期
Calendar temp = p_start;
while (temp.before(p_end)) {
// 把适合的日期加入结果集
result.add(sdf.format(temp.getTime()));
// 中间变量+1
temp.add(Calendar.DAY_OF_YEAR, 1);
}
result.add(endDate);
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
/**
* 得到两个日历之前的所有日历
* @param p_start
* @param p_end
* @return
*/
public static List<Date> getDates(Calendar p_start, Calendar p_end) {
List<Date> result = new ArrayList<Date>();
Calendar temp =p_start;
while (temp.before(p_end)) {
result.add(temp.getTime());
temp.add(Calendar.DAY_OF_YEAR, 1);
}
return result;
}
/**
* 把日期字符串转换成日历对象
* @param dateStr
* @return
*/
public static Calendar getCalendar(String dateStr) {
Calendar c = Calendar.getInstance();
// 日期格式化
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try {
c.setTime(sdf.parse(dateStr));
} catch (ParseException e) {
e.printStackTrace();
}
return c;
}
}
结果如下:
[2014-10-25, 2014-10-26, 2014-10-27, 2014-10-28, 2014-10-29, 2014-10-30, 2014-10-31, 2014-11-01, 2014-11-02, 2014-11-03, 2014-11-04, 2014-11-05, 2014-11-06, 2014-11-07, 2014-11-08, 2014-11-09, 2014-11-10, 2014-11-11, 2014-11-12]
[Sat Oct 25 00:00:00 CST 2014, Sun Oct 26 00:00:00 CST 2014, Mon Oct 27 00:00:00 CST 2014, Tue Oct 28 00:00:00 CST 2014, Wed Oct 29 00:00:00 CST 2014, Thu Oct 30 00:00:00 CST 2014, Fri Oct 31 00:00:00 CST 2014, Sat Nov 01 00:00:00 CST 2014, Sun Nov 02 00:00:00 CST 2014, Mon Nov 03 00:00:00 CST 2014, Tue Nov 04 00:00:00 CST 2014, Wed Nov 05 00:00:00 CST 2014, Thu Nov 06 00:00:00 CST 2014, Fri Nov 07 00:00:00 CST 2014, Sat Nov 08 00:00:00 CST 2014, Sun Nov 09 00:00:00 CST 2014, Mon Nov 10 00:00:00 CST 2014, Tue Nov 11 00:00:00 CST 2014]