Преобразование строки в дату не работает должным образом

Я получаю дату по ajax в формате String. Но он меняется, когда я конвертирую его в дату с помощью SimpleDateFormat. Месяц всегда меняется на январь. Меня беспокоит только изменение месяца. Мой код приведен ниже

String appointmentDate = request.getParameter("appointmentDate");
System.out.println(" appointment date in String format "+appointmentDate);

Здесь я правильно получаю дату (16.12.2015). Но когда я меняю его на формат даты, он меняется (пятница, 16 января, 00:12:00 IST 2015). Независимо от того, какой месяц я ввожу, скажем, август, май, июнь, я всегда получаю месяц январь.

SimpleDateFormat dateFormat = new SimpleDateFormat("dd/mm/yyyy");
Date parsedDate = dateFormat.parse(appointmentDate);
System.out.println(" appointment date in DATE format "+parsedDate);

Пожалуйста, помогите мне. Заранее спасибо.


person abhishek    schedule 14.08.2015    source источник
comment
Но когда я меняю его на формат даты, он меняется (пятница, 16 января, 00:12:00 IST 2015). Кажется, вы думаете, что java.util.Date имеет формат. Это не так. Если вы хотите отформатировать его определенным образом, используйте DateFormat.format.   -  person Jon Skeet    schedule 14.08.2015
comment
@Jon Skeet Спасибо за ценную информацию. Тип возвращаемого значения DateFormat.format — String, но я хочу, чтобы он имел тип Date.   -  person abhishek    schedule 14.08.2015
comment
Тогда у вас уже есть это как дата, но вы жалуетесь на форматирование (но когда я меняю его на формат даты, он меняется (пятница, 16 января, 00:12:00 IST 2015) ), что означает, что вы жалуетесь на строковое представление. Или вы беспокоились только о смене месяца? Я повторно открыл вопрос, но было бы полезно, если бы вы отредактировали вопрос, чтобы прояснить проблему.   -  person Jon Skeet    schedule 14.08.2015
comment
Да, ты прав. Меня беспокоит только смена месяца. Но сейчас проблема решена. Я поставил «дд/мм/гггг» вместо «дд/мм/гггг».   -  person abhishek    schedule 14.08.2015


Ответы (1)


В соответствии с JavaDoc нижний регистр m обозначает минуты, а не месяцы.

Изменение вашего выражения на dd/MM/yyyy должно решить проблему.

person npinti    schedule 14.08.2015
comment
Большое Вам спасибо. Я получил ответ. Я не знаю, как я мог сделать эту глупую ошибку. - person abhishek; 14.08.2015
comment
@abhishek Вы можете избежать такой ошибки, скопировав пример рабочего кода (из StackOverflow или Учебник), запустите его вместе с кодом проблемы для проверки. Затем сравните его с вашим кодом, настраивая его до тех пор, пока проблема не будет обнаружена. - person Basil Bourque; 14.08.2015