Непонятная дата Исключение при прохождении строковой даты - PullRequest
0 голосов
/ 28 октября 2011

Я получаю значение Last-Modified заголовка ответа HTTP и пытаюсь преобразовать значение даты String в объект Date как:

  ..

  URLConnection urlConnection = url.openConnection();
  Map<String, List<String>> headers = urlConnection.getHeaderFields();
  Date date = new SimpleDateFormat("MMMM d, yyyy",   Locale.ENGLISH).parse(headers.get(LAST_MODIFIED).get(0));

Это исключение:

java.text.ParseException: Неразборчивая дата: «Четверг, 27 октября 2011 г. 13:09:24 GMT "at java.text.DateFormat.parse (DateFormat.java:337)

Может кто-нибудь заметить проблему с этим ?! Благодаря.

EDITED .

Ответы [ 4 ]

3 голосов
/ 28 октября 2011

Необходимо указать правильный шаблон для SimpleDateFormat.

E : день недели
d : День в месяце
M : месяц в году
y : год
H : час в дне (0-23)
м : минута в часе
с : секунда в минуте
z : часовой пояс

String dateString = "Thu, 27 Oct 2011 13:09:24 GMT";
SimpleDateFormat format = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss zzz");
Date d = format.parse(dateString);

Взгляните на этот дублирующий вопрос: Как проанализировать дату из заголовка HTTP Last-Modified? .

Apache commons-httpclient предоставляет DateUtil.parseDate(dateString) с уже использует этот формат, как Bohzo указал в своем решении связанного вопроса

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

Просто используйте urlConnection.getLastModified() и конвертируйте эту длинную дату или календарь.

1 голос
/ 28 октября 2011

Разве вы не должны использовать urlConnection.getDate() для получения значения заголовка Date?Похоже, вы извлекаете поле заголовка CONTENT_TYPE.

0 голосов
/ 28 октября 2011

Указанный вами формат даты не соответствует формату даты в строке, которую вы анализируете.
try:

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