I have written a code that adds and subtracts days from dates, but it is not working effectively. I am having a hard time making my addition and subtraction of dates also account for leap years. How can I make my addition and subtraction effective?
Addition:
public void additionOfDays(int days) {
year += days / 365;
days %= 365;
month += days / 30;
days %= 30;
day += days;
if (isLeapYear() && month == 2 && day > 28) {
day -= 28;
month++;
} else if (ODD_MONTHS.contains(month) && day > 31) {
day -= 31;
month++;
} else if (day > 30) {
day -= 30;
month++;
}
}
Subtraction:
public void subtractionOfDays(int days) {
year -= days / 365;
days %= 365;
month -= days / 30;
days %= 30;
day -= days;
if (isLeapYear() && month == 2 && day > 28) {
day = 28;
month--;
} else if (ODD_MONTHS.contains(month) && day > 31) {
day += 31;
month--;
} else if (day > 30) {
day += 30;
month--;
}
Month Names and Odd Months:
public String[] MONTH_NAMES = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};
public List<Integer> ODD_MONTHS = Arrays.asList(1, 3, 5, 7, 8, 10, 12);