2

电子邮件消息解析器包含以下数据格式定义:

private final static DateFormat dateFormat = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z");


if (line.startsWith("Date:")) {
        try {
            email.date = dateFormat.parse(line.substring(6));
        } catch (ParseException e) {
                System.err.println("Unparsable: " + line.substring(6));
        }

此代码打印错误:

Unparsable: Mon, 15 Jan 2001 23:18:00 -0800 (PST)

为什么格式不匹配?

EEE, d MMM yyyy HH:mm:ss Z
4

2 回答 2

6

它对我有用 - 但后来我开始使用英语语言环境。这可能是问题所在 - 尝试在构造时明确指定语言环境SimpleDateFormat

private final static DateFormat dateFormat =
    new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z", Locale.US);

否则将使用您当前的系统区域设置,如果不是英语,它将尝试解析不同的月份和日期名称。

于 2013-08-06T11:05:00.410 回答
0
    DateFormat dateFormat = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z");
    Date date=dateFormat.parse("Mon, 15 Jan 2001 23:18:00 -0800 (PST)");
    System.out.println(dateFormat.format(date));

我试过了,它打印了

   Tue, 16 Jan 2001 13:18:00 +0600

我没有收到任何错误

于 2013-08-06T11:05:04.407 回答