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); 
 
    