2011-10-28 114 views
0

我检索HTTP响应头的最后修改值,并试图为字符串的日期值转换为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:无法解析的日期: “星期四,2011年10月27日13时09分24秒 GMT” 在java.text.DateFormat.parse(DateFormat.java:337)

有人可以发现这个问题?!谢谢。

编辑

+0

[Java字符串到日期转换]的可能重复(http://stackoverflow.com/questions/4216745/java-string-to-date-conversion) – Bitmap

回答

2

只需使用urlConnection.getLastModified()和转换,长期为日期或日历。

3

您需要为SimpleDateFormat提供适当的图案。

è:星期中的天
d:一天在一个月
中号:本月年
Ÿ:年
^h:一天中的小时(0〜 23)
m:小时分钟
小号:在二分钟
ž:时区

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?

阿帕奇commons-httpclient提供DateUtil.parseDate(dateString)与已经在他的解决方案使用此格式,Bohzo pointed out到链接的问题

1

你不是应该使用urlConnection.getDate()检索Date头的值?它看起来像您检索CONTENT_TYPE标题字段。

+0

请参阅已编辑。 'urlConnection.getDate()'会返回当前日期。 – Bitmap

+0

正如javadoc所说:'返回日期标题字段的值.',这与LastModified标题不同。 –

0

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

EEE, dd MMM, yyyy