Java日期解析器偏移两年

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

为什么这个相差两年两个月?
2个回答

9

使用小写的mm表示分钟

EEE, dd MMM yyyy HH:mm:ss Z

3
它只是在你的日期上加了32个月。 - SLaks

4
Jigar Joshi已经回答了主要问题-但是一个提示是设置DateFormat.setLenient(false)(参见JavaDoc)将避免许多解析问题,因为该格式不会默默地接受无意义的值。
第二个提示(因为我最近遇到了这个问题)是始终使用上午和下午时间戳测试您的DateFormats,因为很容易混淆hhHH格式(12小时和24小时格式)。否则,您可能会发现您的测试数据正常工作,但实际数据失败并出现令人困惑的错误。

谢谢。非常有用,显然反映了我脑海中的想法。 - djechlin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接