使用simpledateformat解析日期

时间:2012-09-17 15:00:02

标签: java android parsing date format

我试图解析以下日期:

 Wed Aug 27 13:08:45 +0000 2008 

(适用于Twitter API 1.1)

我制作以下格式:

/**
 * Large twitter date format sample: "Wed Aug 27 13:08:45 +0000 2008"
 */
private static final String LARGE_TWITTER_DATE_FORMAT = "EEE MMM dd HH:mm:ss Z yyyy";

但它说:

java.text.ParseException: Unparseable date: "Sun Dec 25 14:49:28 +0000 2011" (at offset 0)
     at java.text.DateFormat.parse(DateFormat.java:626)

我做错了什么?

由于

2 个答案:

答案 0 :(得分:4)

我认为这是区域设置问题。在我的机器上运行该代码,无异常给我预期的结果。

提示:解析ENGLISH区域设置效果很好

 String LARGE_TWITTER_DATE_FORMAT = "EEE MMM dd HH:mm:ss Z yyyy";
 String twiDate = "Wed Aug 27 13:08:45 +0000 2008";
 new SimpleDateFormat(LARGE_TWITTER_DATE_FORMAT, Locale.ENGLISH)
       .parse(twiDate).getHours());

解析法国locale 会导致同样的错误

String LARGE_TWITTER_DATE_FORMAT = "EEE MMM dd HH:mm:ss Z yyyy";
String twiDate = "Wed Aug 27 13:08:45 +0000 2008";
System.out.println(new SimpleDateFormat(LARGE_TWITTER_DATE_FORMAT, Locale.FRANCE)
                .parse(twiDate).getHours());

答案 1 :(得分:-1)

以下为我工作

import java.text.ParseException;
import java.text.SimpleDateFormat;


public class Test {

    private static final String LARGE_TWITTER_DATE_FORMAT = "EEE MMM dd HH:mm:ss Z yyyy";

    /**
     * @param args
     */
    public static void main(String[] args) {
        SimpleDateFormat df = new SimpleDateFormat(LARGE_TWITTER_DATE_FORMAT);

        try {
            System.out.println(df.parse("Wed Aug 27 13:08:45 +0000 2008 "));
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}