gpt4 book ai didi

java - 如何获取给定日期范围内的日期列表?

转载 作者:行者123 更新时间:2023-11-30 02:44:23 27 4
gpt4 key购买 nike

我正在尝试获取 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:无法将给定对象格式化为日期。

请指导我获取日期范围内的日期列表!

最佳答案

只需将您的开始日期包含在日历中并使用它即可:

Date startDate;
Date endDate;

Calendar c = Calendar.getInstance();
c.setTime(startDate);
Date dt = startDate;
List<Date> dates = new ArrayList<>();

do {
dates.add(dt);
c.add(Calendar.DATE, 1);
dt = c.getTime();
} while (endDate.getTime() > dt.getTime());

正如您所期望听到的那样,Java 8 API 或可能的 JodaTime 可能会让您的生活比使用 Java 7 日期方式更轻松。

关于java - 如何获取给定日期范围内的日期列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40650101/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com