С использованием java.time
:
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
...
String sDate;
String eDate;
try (Scanner scan = new Scanner(System.in)) {
System.out.print("Enter first Date (dd/MM/yyyy): ");
sDate = scan.nextLine();
System.out.print("Enter second Date (dd/MM/yyyy): ");
eDate = scan.nextLine();
}
DateTimeFormatter format = DateTimeFormatter.ofPattern("dd/MM/yyyy");
LocalDate dateStart = LocalDate.from(format.parse(sDate));
LocalDate dateEnd = LocalDate.from(format.parse(eDate));
while (!dateStart.isAfter(dateEnd)) {
System.out.println(dateStart);
dateStart = dateStart.plusDays(1);
}
Или вы можете использовать joda time
api:
import org.joda.time.Days;
import org.joda.time.DurationFieldType;
import org.joda.time.LocalDate;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;
...
String sDate = "07/08/2017";
String eDate = "07/10/2017";
DateTimeFormatter format = DateTimeFormat.forPattern("dd/MM/yyyy");
LocalDate dateStart = new LocalDate(format.parseLocalDate(sDate));
LocalDate dateEnd = new LocalDate(format.parseLocalDate(eDate));
int days = Days.daysBetween(dateStart, dateEnd).getDays();
for (int i = 0; i < days; i++) {
LocalDate d = dateStart.withFieldAdded(DurationFieldType.days(), i);
System.out.println(d);
}
ОБНОВЛЕНИЕ:
Вы отредактировали свой вопрос, и, насколько я понимаю, вам нужны три разных формата даты, как показано ниже:
input date : dd/MM/yyyy
output date1 : yyyyMM
output date2 : ddMMyyyy
Поэтому я обновил свой ответ следующим образом:
String sDate = "07/08/2017";
String eDate = "07/10/2017";
DateTimeFormatter format1 = DateTimeFormatter.ofPattern("dd/MM/yyyy");
DateTimeFormatter format2 = DateTimeFormatter.ofPattern("ddMMyyyy");
DateTimeFormatter format3 = DateTimeFormatter.ofPattern("yyyyMM");
LocalDate dateStart = LocalDate.from(LocalDate.parse(sDate, format1).withDayOfMonth(1)); // just getting the month and year from user input and start with first day of given month
LocalDate dateEnd = LocalDate.from(format1.parse(eDate));
while (!dateStart.isAfter(dateEnd)) {
System.out.println("date1 : "+dateStart.format(format3) + " - date2: " + dateStart.format(format2));
dateStart = dateStart.plusDays(1);
}
Выход:
date1 : 201708 - date2: 01082017
date1 : 201708 - date2: 02082017
date1 : 201708 - date2: 03082017
date1 : 201708 - date2: 04082017
date1 : 201708 - date2: 05082017
date1 : 201708 - date2: 06082017
....
Надеюсь, это решит вашу проблему.