我正在检索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
答案 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