java如何获取给定日期范围内的日期列表?
我试图以iso格式(“yyyy-MM-dd”)获取日期范围内的日期列表,如下所示:
ArrayList<String> datesList = new ArrayList<String>();
try {
SimpleDateFormat isoFormat = new SimpleDateFormat("yyyy-MM-dd");
int[] fromDateParts = new int[3];
for (int f = 0; f < fromIsoDate.split("-").length; f++) {
fromDateParts[f] = Integer.parseInt(fromIsoDate.split("-")[f]);
System.out.println("fromDateParts[" + f + "] : " + fromDateParts[f]);
}
int[] toDateParts = new int[3];
for (int t = 0; t < toIsoDate.split("-").length; t++) {
toDateParts[t] = Integer.parseInt(toIsoDate.split("-")[t]);
System.out.println("toDateParts[" + t + "] : " + toDateParts[t]);
}
Calendar fromDate = new GregorianCalendar(fromDateParts[0], fromDateParts[1], fromDateParts[2]);
Calendar toDate = new GregorianCalendar(toDateParts[0], toDateParts[1], toDateParts[2]);
System.out.println("fromDate " + fromDate + " toDate " + toDate);
boolean hasMoreDays = true;
while (hasMoreDays) {
if ((fromDate.before(toDate)) || (fromDate.equals(toDate))) {
datesList.add(isoFormat.format(fromDate));
fromDate.add(Calendar.DAY_OF_MONTH, 1);
} else {
hasMoreDays = false;
}
}
} catch (Exception e) {
e.printStackTrace();
System.out.println("Exception : While determining the dates in between " + fromIsoDate + " and " + toIsoDate + "!");
}
但是,它会抛出错误:
JAVAlang.IllegalArgumentException:无法将给定对象格式化为日期
请指导我获取日期范围内的日期列表
# 1 楼答案
如果您使用java8,您可以在一行中编写全部内容,如下所示,我使用了
java.util.Date
# 2 楼答案
只需将你的开始日期用
Calendar
括起来,然后使用:正如您所料,Java8API或JodaTime可能会使您的生活比使用Java7日期方式更简单
# 3 楼答案
你应该把一个
Date
传递给你的SimpleDateFormat.fotmat
而不是Calendar
:到
以下是我对您要求的解决方案:
希望这有帮助