Разбор SimpleDateFormat для формата DTG - PullRequest
2 голосов
/ 06 октября 2011

Я действительно запутался с объектом SimpleDateFormat.Вот код:

SimpleDateFormat formatter = new SimpleDateFormat("DDHHmm MMM yy", Locale.ENGLISH);

String dateString = "312230 MAR 10";
try 
{
    Date date = (Date)formatter.parse(dateString);
    System.out.println("Original string: " + dateString);
    System.out.println("Parsed date    : " + date.toString());
}
catch (ParseException e) 
{
    System.out.println("ERROR: could not parse date in string \"" +
                dateString + "\"");
}

и это вывод:

Original string: 312230 MAR 10
Parsed date    : Sun Jan 31 22:30:00 EST 2010

Я действительно ожидал, что результат будет

Parsed date    : Wed Mar 31 22:30:00 EST 2010

Может кто-нибудь, пожалуйста, укажитечто я делаю не так?Это будет высоко ценится.Я использую Java 1.6_27.

Ответы [ 2 ]

2 голосов
/ 06 октября 2011

Изменение шаблона simpleDateFormat на "ddHHmm MMM yy" возвращает ожидаемый результат

Original string: 312230 MAR 10
Parsed date    : Wed Mar 31 22:30:00 CEST 2010

ДД в верхнем регистре означает день года. В вашем примере 31-й день в январе, как ваш вывод, а не в марте

0 голосов
/ 06 мая 2016

В SimpleDateFormat:

D представляют День в году. Например, 31 в качестве значения DD даст вам 31-й день с 1 января. Таким образом, 31-й день годаначиная с 1 января будет 31 января.

d представляет День в месяце. Например, если в качестве значения dd указано 31, а MMM - MAR, то 31Май.

Подробнее в SimpledateFormat .

...