Объясните, пожалуйста, что происходит в строке 24 и 32 и правильно ли я написал описание происходящего в комментариях около кода?
package com.javarush.task.task08.task0827;

import java.util.Date;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Locale;
/*
Работа с датой
*/

public class Solution {
    public static void main(String[] args) throws ParseException {

        System.out.println(isDateOdd("MAY 1 2024"));
        System.out.println(isDateOdd("MAY 2 2024"));
        System.out.println(isDateOdd("MAY 3 2024"));
        System.out.println(isDateOdd("MAY 4 2024"));
    }

    public static boolean isDateOdd(String date) throws ParseException {
        SimpleDateFormat format = new SimpleDateFormat("MMMM dd yyyy", Locale.ENGLISH);
        //обращение к датам в методе main - сверху от коментария
        Date date1; // Создание переменной типа Date
        date1 = format.parse(date);
        Date date2 = new Date();//Создаём объект, типа Date
        date2.setDate(1);
        date2.setMonth(0);
        date2.setHours(0);
        date2.setMinutes(0);
        date2.setSeconds(0);
        int y = date1.getYear();//Передаём переменной y значение переменной date
        date2.setYear(y);
        boolean k;

        if (date1.getMonth() == 0 && date1.getDate() == 1){
            k = true;
        }
        else {
            if (date1.getMonth() == 0 && date1.getDate() == 2) {
                k = false;
            } else {
                long date3 = date1.getTime() - date2.getTime();
                int d = (int) date3 / (24 * 60 * 60 * 1000);
                if (d % 2 == 0) {
                    k = false;
                } else k = true;
            }
        }

        return k;
    }
}