Я новичок в 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 года.
Что я делаю неправильно?
M Month in yearВо-первых, посмотрите (и поймите) различные спецификаторы формата для SimpleDateFormat. Затем выбросьте его и Calendar и посмотрите на замену Дата и время API.
Y Week year - интересно, почему
D day in year: /
Спасибо вам, ребята. С таблицей от Oracle теперь это очевидно.




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