传递字符串日期时无法解析的日期异常

时间:2011-10-28 12:24:37

标签: java string date time

我正在检索HTTP响应标头的Last-Modified值并尝试将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:Unparseable date:“Thu,27 Oct 2011 13:09:24   GMT“at java.text.DateFormat.parse(DateFormat.java:337)

有人能发现这个问题吗?!感谢。

EDITED

4 个答案:

答案 0 :(得分:3)

您需要为SimpleDateFormat提供正确的模式。

  

E :星期几    d :每月的日期
   M :一年中的月份    y :年份    H :一天中的小时(0-23)
   m :小时分钟
   s :第二分钟    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);

看看这个重复的问题:How to parse Date from HTTP Last-Modified header?

Apache commons-httpclient提供DateUtil.parseDate(dateString)已使用此格式,如Bohzo pointed out在其解决链接问题的方法中

答案 1 :(得分:2)

只需使用urlConnection.getLastModified()并将其转换为日期或日历。

答案 2 :(得分:1)

您是否应该使用urlConnection.getDate()来检索Date标头的值?看起来您正在检索CONTENT_TYPE标题字段。

答案 3 :(得分:0)

您指定的日期格式与您要解析的字符串中的日期格式不匹配 尝试:

EEE, dd MMM, yyyy