Такого решения как у меня я не видел, оно не очень компактное и красивое, зато логика наглядная:
1) делим строку с датой на отдельные части: месяц, день, год
2) преобразуем текст заданной даты в числа: день, год
3) присваиваем месяцам их номера (чтобы из String получился int)
4) используем методы set (устанавливаем дату до которой будем считать)
5) применяем паттерн D в SimpleDateFormat
6) пробегаемся по всем дням до заданной выше даты
7) сравниваем %2==0 или %2==1
8) выводим true or false
программа работает и с датами 02.01.1970 и тд
валидация не проходит((
package com.javarush.task.task08.task0827;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.text.SimpleDateFormat;
import java.util.Date;
/*
Работа с датой
*/
public class Solution {
private static int mon;
private static boolean b;
public static void main(String[] args) {
Date date = new Date();
SimpleDateFormat dateFormat = new SimpleDateFormat("D");
String calendar = "JANUARY 31 2019";
String [] array = calendar.split("\\s");
int day = Integer.parseInt(array[1]);
int year = Integer.parseInt(array[2]);
String month = array[0];
if (month.equals("JANUARY")) {
mon = 0;
}
else if (month.equals("FEBRUARY")){
mon = 1;
}
else if (month.equals("MARCH")){
mon = 2;
}
else if (month.equals("APRIL")){
mon = 3;
}
else if (month.equals("MAY")){
mon = 4;
}
else if (month.equals("JUNE")){
mon = 5;
}
else if (month.equals("JULY")){
mon = 6;
}
else if (month.equals("AUGUST")){
mon = 7;
}
else if (month.equals("SEPTEMBER")){
mon = 8;
}
else if (month.equals("OCTOBER")){
mon = 9;
}
else if (month.equals("NOVEMBER")){
mon = 10;
}
else if (month.equals("DECEMBER")){
mon = 11;
}
date.setDate(day);
date.setMonth(mon);
date.setYear(year);
String result = dateFormat.format(date);
System.out.println(isDateOdd(result));
//System.out.println(result);
}
public static boolean isDateOdd(String date) {
int result1 = Integer.parseInt(date);
if (result1%2 == 1) {
b = true;
}
else if (result1%2 == 0) {
b = false;
}
//System.out.println(b);
return b;
}
}
/*
public class Solution {
public static void main(String[] args) throws IOException {
System.out.println(isDateOdd("MAY 1 2013"));
*/
/*Date date = new Date();
SimpleDateFormat dateFormat = new SimpleDateFormat("MMMM d yyyy", Locale.ENGLISH);
System.out.println(dateFormat.format(date));*//*
}
public static boolean isDateOdd(String date) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String str = reader.readLine();
String [] array = str.split("\\s");
String month = array[0];
int day = Integer.parseInt(array[1]);
int year = Integer.parseInt(array[2]);
if (year %100==0 && year %400 ==0 )
System.out.println("количество дней в году: 366");
else if (year % 4 == 0 && year % 100 > 0)
System.out.println("количество дней в году: 366");
else if (year % 100 == 0)
System.out.println("количество дней в году: 365");
else
System.out.println("количество дней в году: 365");
return true;
}
}*/