Java DateFormat не конвертируется правильно

Я, вероятно, что-то упускаю из виду, но синтаксический анализ строки на дату у меня работает неправильно. У меня есть строка: «20110705_060229», формат которой: «ГГГГддММ_ЧЧммсс»

этот фрагмент кода:

Date triggermoment;

public void setTriggermoment(String triggermoment) throws ParseException {
  DateFormat formatter = new SimpleDateFormat("YYYYddMM_HHmmss");
  this.triggermoment = formatter.parse(triggermoment);
}

дает мне результат (когда я запускаю метод toString() в момент триггера): Mon Jan 03 06:02:29 CET 2011

Почему он неправильно анализирует день и месяц? Должно быть 7 июня, а не 3 января.

Заранее спасибо!


person Rens Groenveld    schedule 18.01.2014    source источник


Ответы (2)


Вы должны использовать y годами. Y используется для обозначения года недели:

DateFormat formatter = new SimpleDateFormat("yyyyddMM_HHmmss");

Выход:

Sat May 07 06:02:29 CEST 2011

Должно быть 7 июня, а не 3 января.

5-й месяц в году май, а не июнь.

person Alexis C.    schedule 18.01.2014
comment
Большое спасибо! Действительно май. Думаю, мне нужно немного поспать ;-) Теперь проблема решена! - person Rens Groenveld; 18.01.2014

ММ - месяц, а мм - мунуты. y — год, а Y — год недели.

Попробуйте yyyyddMM_HHmmss вместо YYYYddMM_HHmmss

person Vivek Vermani    schedule 18.01.2014