在SimpleDateFormat中解析异常

时间:2012-07-02 19:22:19

标签: java date-format simpledateformat

我正在使用 SimpleDateFormat ,我收到ParseException,如下所示。

java.text.ParseException: Unparseable date: "Mon Jul 02 21:56:10 AST 2012"

我的代码是

    String dateStr = "Mon Jul 02 21:56:10 AST 2012";
    DateFormat readFormat = new SimpleDateFormat("EEE MMM dd HH:mm:ss Z yyyy ");

    DateFormat writeFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    Date date = null;
    try {
        date = readFormat.parse(dateStr);
    } catch (ParseException e) {
        System.out.println("Error in parsing date ********");
    }

    String formattedDate = "";
    if (date != null) {
        formattedDate = writeFormat.format(date);
    }
    System.out.println("Formatted date is " + formattedDate);

知道我哪里错了吗?

更新1

我也试过

DateFormat readFormat = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy ");
                                                                  ^

但仍然是同样的例外。

2 个答案:

答案 0 :(得分:4)

只要我指定日期格式应使用英语区域设置的符号,您的代码就可以(使用z,而不是Z):

SimpleDateFormat readFormat = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy");
readFormat.setDateFormatSymbols(DateFormatSymbols.getInstance(Locale.ENGLISH));

按照以赛亚语,yyyy之后你还有额外的空间:yyyy ")。删除多余的空间。

答案 1 :(得分:0)

格式代码Z用于时区偏移,如-0800,而格式代码z用于书写格式,例如PST或{{1} },根据SimpleDateFormat所描述的内容。仔细检查您的解析模式是否具有预期的大小写。