2

发布的日期字符串返回为:Sun,2012 年 11 月 18 日 06:50:02 GMT,我的 convertDate 方法返回 java.text.ParseException: Unparseable date: "Sun, 18 Nov 2012 06:50:02 GMT"(在偏移量 8)。我检查了资源,但找不到像这样有用的资源...使用 SimpleDateFormat 将带有 GMT 时区的字符串解析为 Date

如果您能对此有所了解,将不胜感激。这是我的方法 .. pubDate 这里是星期日,2012 年 11 月 18 日 06:50:02 GMT

public Date convertDate(String pubDate){

    SimpleDateFormat sdf =  new SimpleDateFormat("EEE, dd MM yyyy hh:mm:ss Z",Locale.US);
    Date newsDate = new GregorianCalendar(0, 0, 0).getTime();
        try{
            newsDate  = sdf.parse(pubDate);
        }catch(ParseException e){
            Log.d(Tag, "Exception Parsing date" + pubDate);
        }
    return null;
}
4

2 回答 2

5

用于MMM月份字段:

new SimpleDateFormat("EEE, dd MMM yyyy hh:mm:ss Z",Locale.US);

解决此问题后,请不要忘记以newsDate您当前正在返回的方式返回null

于 2012-11-18T15:03:55.817 回答
1

这是我做的一个小测试:

@Test
public void testDate() throws ParseException {

    String pubDate = "Sun, 18 Nov 2012 06:50:02 GMT";

    SimpleDateFormat sdf = new SimpleDateFormat(
            "EEE, dd MMM yyyy hh:mm:ss z", Locale.US);
    Date newsDate = new GregorianCalendar(0, 0, 0).getTime();

    newsDate = sdf.parse(pubDate);

}

您需要设置月份,MMM因为您使用的是月份的前三个字母(四个 M 表示完整的月份名称)。此外,时区必须z代替,Z因为您有ISO 8601 时区(GMT)。

于 2012-11-18T15:13:51.843 回答