3

我有以下代码:-

        Calendar calc = Calendar.getInstance();
        SimpleDateFormat sdf = new SimpleDateFormat("MMM-yyyy");
        calc.set(Calendar.YEAR, calc.get(Calendar.YEAR) - 1);
        calc.set(Calendar.MONTH, Calendar.NOVEMBER);
        System.out.println("---NOV? : " + sdf.format(calc.getTime()));

        Calendar calc1 = Calendar.getInstance();
        calc1.set(Calendar.YEAR, calc1.get(Calendar.YEAR) - 1);
        calc1.set(Calendar.MONTH, Calendar.DECEMBER);
        System.out.println("-- DEC : " + sdf.format(calc1.getTime()));

上述代码的输出是:-

> ---NOV? : Dec-2012
> -- DEC : Dec-2012

这只发生在 1 月 31 日,有人可以解释为什么会发生这种情况吗?

4

2 回答 2

7

日历被设置为宽松的解释,所以如果你告诉它 11 月 31 日,那么,11 月只有 30 天,所以它会滚动到 12 月 1 日。

于 2013-01-31T06:41:42.240 回答
5

我怀疑第一种情况是将“11 月 31 日”舍入到“12 月 1 日”,因为您没有更改日历中的日期。

于 2013-01-31T06:42:17.720 回答