Java日历1月31日号

时间:2013-01-31 06:38:24

标签: java

我有以下代码: -

        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日,有人可以解释为什么会发生这种情况吗?

2 个答案:

答案 0 :(得分:7)

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

答案 1 :(得分:5)

我怀疑第一个案例是“11月31日”到“12月1日”,因为你没有更改日历中的那一天。

相关问题