3

我真的不知道从哪里开始调试这个。

代码:

String date = "Mon, 15 Oct 2012 20:32:12 +0000 (GMT)";

        SimpleDateFormat format = new SimpleDateFormat("EEE, dd MMM yyyy HH:MM:ss Z");

        try {
            Date date2 = format.parse(date);
            System.err.println("parsed: " + date2);
        }
        catch (ParseException e) {
            System.err.println("Failed to parse: " + format);
        }

输出:

parsed: Fri Aug 15 16:00:12 EDT 2014

为什么这要推迟两年零两个月?

4

2 回答 2

9

使用小mm几分钟

EEE, dd MMM yyyy HH:mm:ss Z
于 2012-10-15T21:44:47.730 回答
4

Jigar Joshi 已经回答了主要问题 - 但只是提示设置DateFormat.setLenient(false)(请参阅JavaDoc)将避免很多这样的解析问题,因为格式不会默默地接受无意义的值。

第二个提示(因为我最近有这点)是始终使用 am 和 pm 时间戳测试您的 DateFormats,因为它很容易混淆格式(12 小时hhHH24 小时格式)。否则,您会发现您的测试数据工作正常,但实际数据失败并出现令人困惑的错误。

于 2012-10-15T21:47:53.987 回答