0

我不明白以下代码的输出是 12-12-1991,

请帮我解释一下,谢谢你的帮助

Calendar c = Calendar.getInstance(TimeZone.getTimeZone("GMT+7"));
        SimpleDateFormat simpleDF = new SimpleDateFormat("dd-MM-yyyy");
        c.set(1991, 11, 12);
        Date d = c.getTime();              
        System.out.println(simpleDF.format(d));
4

4 回答 4

1

来自javadocs

public final void set(int year,
                  int month,
                  int date)

设置日历字段 YEAR、MONTH 和 DAY_OF_MONTH 的值。保留其他日历字段的先前值。如果不需要,请先调用 clear()。参数: year - 用于设置 YEAR 日历字段的值。month - 用于设置 MONTH 日历字段的值。月份值是从 0 开始的。例如,0 表示一月。date - 用于设置 DAY_OF_MONTH 日历字段的值。

于 2013-07-04T10:25:55.873 回答
1

月是基于零索引的。你需要有10而不是11.

或者直接使用整数,您可以有意义地编写。

 c.set(1991,Calendar.NOVEMBER, 12);

WhereCalendar.NOVEMBER是一个static int表示 的字段NOVEMBER

于 2013-07-04T10:23:09.490 回答
1

一月是第 0 个月,所以当你设置 11 是十二月检查java.util.Date 文档

于 2013-07-04T10:23:26.670 回答
1

月份值从 0 开始。例如,0 表示一月。

你必须改变

c.set(1991, 11, 12);

c.set(1991, 10, 12);
于 2013-07-04T10:24:35.270 回答