使用SimpleDateFormat严格解析日期

时间:2013-11-13 07:46:30

标签: java apache-commons-dateutils

我正在尝试解析一个日期,但我只得到一个ParseException。我正在使用Apache DateUtils。

我正在尝试解析的日期的代码是:

        Locale.setDefault(Locale.ENGLISH);
        System.out.println(Locale.getDefault());
        String[] list = {"EEE, d MMM yyyy HH:mm:ss Z"};
        try {
            DateUtils.parseDateStrictly("Mon, 20 Sep 2013 07:38:22 +0000",
                    list);          
        } catch (ParseException ex) {
            System.out.println(ex);          
        }

我做过的其中一件事就是更改我的Locale,因为我的默认Locale是es_ES,但它无论如何都不起作用。

为什么不起作用?

2 个答案:

答案 0 :(得分:2)

因为您使用的是严格的解析器; 2013年9月20日是星期五而不是星期一。 从api开始,解析器严格解析 - 它不允许诸如“February 942,1996”之类的日期。

Date d = DateUtils.parseDateStrictly(
      "Fri, 20 Sep 2013 07:38:22 +0000",
      "EEE, d MMM yyyy HH:mm:ss Z");
System.out.println(d);

答案 1 :(得分:0)

尝试,

String[] parsePattern = {"EEE, dd MMM yyyy HH:mm:ss Z"};
try {
    Date parsedDate = DateUtils.parseDateStrictly("Fri, 20 Sep 2013 07:38:22 +0000", parsePattern);
    System.out.println(" >>>>>>>>>>>>>>>>>>>>>>>> parsedDate : " + parsedDate);
} catch (ParseException ex) {
    System.out.println(ex);          
}