public static void main(String[] args) {
        System.out.println(isDateOdd("MAY 1 2013"));
//        System.out.println(isDateOdd("OCT 3 2017"));
//        System.out.println();
//        System.out.println(isDateOdd("FEB 1 2017"));
//        System.out.println();
//        System.out.println(isDateOdd("JAN 3 2017"));
    }

    public static boolean isDateOdd(String date) {
        Date endDate = new Date(date);
        endDate.setHours(0);
        endDate.setMinutes(0);
        endDate.setSeconds(0);
        Date startDate = new Date();
        startDate.setHours(0);
        startDate.setMinutes(0);
        startDate.setSeconds(0);
        startDate.setMonth(0);
        startDate.setDate(1);
        startDate.setYear(endDate.getYear());

        long msDay = 1000 * 60 * 60 * 24;

        long start = startDate.getTime()/msDay;
        long end = endDate.getTime()/msDay;

        long dayDistance = end - start;
//        System.out.println(dayDistance);
        if (dayDistance % 2 == 0) return true;
        else return false;
    }
Логика такая: Считаю разницу между днями. Если разница четная - значит, сегодня нечётный день с начала года (true). И наоборот. 18 - 1 = 17 И первый день года учитывается (1 - 1) % 2 == 0, т.к. 0 / 2 = 0