I'm trying to enter a start date, an end date, and obtain all the dates in between. I have the formatting where I need it, I have Joda-Time ready to go, but...past that, I'm stuck. I've included what I have working, as well as what is not going.
So far, I have the following code (working):
DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
DateFormat sysDate = new SimpleDateFormat("ddMMyyyy");
//Get Start Date
Date str_date = jXDatePicker1.getDate();
jXDatePicker1.setFormats(dateFormat);
String startDate = sysDate.format(jXDatePicker1.getDate());
//Get End Date
Date end_date = jXDatePicker2.getDate();
jXDatePicker2.setFormats(dateFormat);
String endDate = sysDate.format(jXDatePicker2.getDate());
And here's what I'm trying to implement but to no success:
List dates = new ArrayList();
int days = Days.daysBetween(startDate, endDate).getDays();
for (int i=0; i < days; i++) {
LocalDate d = startDate.withFieldAdded(DurationFieldType.days(), i);
dates.add(d);
}
Thank you in advance.
解决方案
I'm not sure if int days = Days.daysBetween(startDate, endDate).getDays(); will work, assuming the startDate and endDate are still Strings
Instead, you should use the str_date and end_date values instead, maybe something more like...
int days = Days.daysBetween(new LocalDate(str_date), new LocalDate(end_date)).getDays();
System.out.println(days);
Try and remember, in general the "format" of the date/time is irrelevant, instead, you want to work with the actual values (of the date/time) and when you need to display, then format then as required
Normally I just keep looping while the date is before the end date, something like...
Random rnd = new Random();
LocalDate start = new LocalDate(2015, DateTimeConstants.SEPTEMBER, 1);
LocalDate end = start.plusDays(rnd.nextInt(200));
List dates = new ArrayList<>(25);
dates.add(start);
while (start.isBefore(end)) {
start = start.plusDays(1);
dates.add(start);
}
for (LocalDate date : dates) {
System.out.println(date);
}
This is inclusive, from the start date to the end date and this example simply generates a list of dates from the start date to a random number of days in the future