我想獲得的日期列表中的日期範圍介於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 + "!");
}
但是,它會拋出錯誤:
的java.lang .IllegalArgumentException:無法將給定對象格式化爲日期。
請指導我獲取日期範圍內的日期列表!
是的,因爲你傳遞的是java.util.Calendar而不是java.util.Date。這聽起來像你應該使用'SimpleDateFormat'解析,而不是自己分裂和解析。如果你使用的是Java 8,我強烈推薦使用java.time包,而不是btw。 –
更改爲'isoFormat.format(fromDate.getTime())'將工作 – Jerry06