SimpleDateFormatter не распознает месяцы - PullRequest
5 голосов
/ 13 мая 2011

Я хочу разобрать строку даты, но с треском провалился. Чтобы проиллюстрировать мою проблему, я написал этот простой тест JUnit:

@Test
public void testParseJavaDate() throws ParseException {     
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-DD_HH-mm-ss", Locale.GERMAN);

    String inputtime = "2011-04-21_16-01-08";
    Date parse = sdf.parse(inputtime);

    assertEquals(inputtime,sdf.format(parse));
}

Этот тест не пройден с этим сообщением:

org.junit.ComparisonFailure: Ожидаемый результат: <2011-0 [4] -21_16-01-08> но было: <2011-0 [1] -21_16-01-08>

Я не понимаю, почему средство форматирования не может правильно проанализировать дату. У вас есть идеи?

Ответы [ 4 ]

8 голосов
/ 13 мая 2011

SimpleDateFormat sdf = new SimpleDateFormat ("гггг-ММ-дд_ЧЧ-мм-сс", Locale.GERMAN);

String inputtime = "2011-04-21_16-01-08";
Date parse = sdf.parse(inputtime);

использовать дд вместо ДД.

6 голосов
/ 13 мая 2011

Вы хотите "dd" (день в месяце), а не "DD" (день в году):

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd_HH-mm-ss", Locale.GERMAN);
3 голосов
/ 13 мая 2011

Используйте d вместо D, так как D - это «День в году», поэтому месяц вынужден совпадать с 21-м днем ​​года (то есть в январе).

0 голосов
/ 13 мая 2011

все предыдущие верны, но вы также должны использовать «мм» вместо «ММ» и наоборот, потому что «М» Отображает минуты с начальным нулем по мере необходимости

, поэтому ваш код будет следующим

public void testParseJavaDate() throws ParseException {
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd_HH-MM-ss", Locale.GERMAN);

    String inputtime = "2011-04-21_16-01-08";
    Date parse = sdf.parse(inputtime);

    sdf = new SimpleDateFormat("dd/mm/yyyy HH:MM:ss", Locale.GERMAN);

    System.out.println(sdf.format(parse));

    assertEquals(inputtime, sdf.format(parse));
}

и будет напечатано

run: 21/04/2011 16:01:08 BUILD SUCCESSFUL (total time: 0 seconds)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...