1

我正在使用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 ");
                                                                  ^

但仍然是同样的例外。

4

2 回答 2

4

只要我指定日期格式应使用英语语言环境的符号,您的代码就可以工作(使用z,而不是):Z

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

根据 eran,在 yyyy: 之后还有额外的空间yyyy ")。删除多余的空间。

于 2012-07-02T19:34:12.510 回答
0

根据SimpleDateFormat中的描述,格式代码Z用于时区偏移量,例如-0800,而格式代码z用于书面格式,例如PSTor 。仔细检查您的解析模式是否具有预期的大小写。CST

于 2012-07-02T19:25:00.487 回答