Output between 15/02/2020 and 02/03/2020 produces 18, but I expect 16.
What am I doing wrong?
public void checkNumberOfDaysBetweenTwoDates(models.Date date2) {
int day_diff, mon_diff, year_diff;
if(date2.checkIfLegal()) {
if(date2.day < day) {
date2.day += date2.numberOfDaysInMonth();
}
date2.month = date2.month - 1;
}
if(date2.month < month) {
date2.month += 12;
date2.year -= 1;
}
day_diff = date2.day - day;
mon_diff = date2.month - month;
year_diff = date2.year - year;
System.out.println("days: " + day_diff + "months: " + mon_diff + "years: " + year_diff);
}
private boolean isLeapYear() {
return year % 4 == 0 &&
(year % 100 != 0 || year % 400 == 0);
}
public boolean checkIfLegal() {
boolean validation = false;
if(month < 1 || month > 12 || day < 1 || day > numberOfDaysInMonth()) {
validation = false;
} else {
validation = true;
}
return validation;
}
private int numberOfDaysInMonth() {
if (month == 2 && isLeapYear())
return 29;
else
return daysInMonth[month - 1];
}