Java - парсинг даты из строки - PullRequest
0 голосов
/ 23 мая 2010

Я хочу проанализировать java.util.Date из строки.Я попробовал следующий код, но получил неожиданный вывод:

Date getDate() {
    Date date = null;

    SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd");
    try {
        date = sdf.parse("Sat May 11");
    } catch (ParseException ex) {
        Logger.getLogger(URLExtractor.class.getName()).log(Level.SEVERE, null, ex);
        return null;
    }

    return date;
}

Когда я запускаю вышеуказанный код, я получил следующий вывод:

Mon May 11 00:00:00 IST 1970

Ответы [ 3 ]

6 голосов
/ 23 мая 2010

Вы не указали год в своей строке. Год по умолчанию - 1970. А в 1970 году 11 мая был понедельником - SimpleDateFormat просто игнорирует день недели в вашей строке.

Из Javadoc DateFormat :

Дата представляется как Date объект или в миллисекундах с 1 января 1970 года, 00:00:00 по Гринвичу.

0 голосов
/ 23 мая 2010

Укажите год в формате, чтобы получить правильный вывод.

Если год не указан, по умолчанию используется значение 1970.

0 голосов
/ 23 мая 2010

если год является проблемой, вы можете добавить y для года:

 public Date getDate() {
    Date date = null;

    SimpleDateFormat sdf = new SimpleDateFormat("MMM dd y");
    try {
        date = sdf.parse("May 11 2010");
    } catch (ParseException ex) {
        Logger.getLogger(URLExtractor.class.getName()).log(Level.SEVERE, null, ex);
        return null;
    }

    return date;
}
 System.out.println(getDate());

Tue May 11 00:00:00 EDT 2010

Edit:

Чтобы получить правильный день недели, вам нужно указать дату (вместе с годом). Я редактировал код выше.

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