Ввод из строки в календарь

Я новичок в Java (обучение), и сейчас я работаю над некоторой задачей, связанной с данными и календарем.

У меня есть такой способ:

public static boolean isDateOdd(String date) throws ParseException {

    Calendar cal = new GregorianCalendar();
    SimpleDateFormat sdf = new SimpleDateFormat("MMMM D YYYY", Locale.US);
    cal.setTime(sdf.parse(date)); // original INPUT

    System.out.println("INPUT: " + cal.getTime());} // output

и из Main point of entry я отправляю в этот метод такое выражение «1 МАЯ 2013»:

public static void main(String[] args) throws ParseException {
    System.out.println(isDateOdd("MAY 1 2013")); 
}

Как только я распечатываю его (после прохождения SimpleDateFormat я получаю вывод как:

ВВОД: вс, 30 декабря, 00:00:00 CET 2012 г.

Это явно не 1 мая 2013 года.

Что я делаю неправильно?

Взгляните на документацию по формату и проверьте, выполняет ли MMMMВ самом деле то, что, по вашему мнению, должно (не только количество символов, но и их регистр). И пока вы это делаете, проверьте и другие (например, D = день в году, поэтому 1 будет 1 января).

Thomas 05.11.2018 09:38
M Month in year
Scary Wombat 05.11.2018 09:38

Во-первых, посмотрите (и поймите) различные спецификаторы формата для SimpleDateFormat. Затем выбросьте его и Calendar и посмотрите на замену Дата и время API.

MadProgrammer 05.11.2018 09:39
Y Week year - интересно, почему
Scary Wombat 05.11.2018 09:39
D day in year: /
MadProgrammer 05.11.2018 09:39

Спасибо вам, ребята. С таблицей от Oracle теперь это очевидно.

Andrii 05.11.2018 09:52

Я рекомендую вам избегать класса SimpleDateFormat. Это не только давно устарело, но и доставит много хлопот. Сегодня в java.time, современный API даты и времени Java намного лучше.

Ole V.V. 05.11.2018 10:30
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
7
43
0

Другие вопросы по теме