3
Calendar c = Calendar.getInstance();
c.set(2019, 12, 29);

当我这样做时,c.getTime()我得到以下输出......

输出:

Wed Jan 29 17:15:27 IST 2020 // 应该是 2019

/////------------------------------------------ ----------------//////

Calendar c = Calendar.getInstance();
c.set(2019, 11, 29);

当我这样做时,c.getTime()我得到以下输出......

输出:

Sun Dec 29 17:18:23 IST 2019

现在我不知道为什么将月份从 12 日更改为 11 日给了我正确的日期和时间,如果有人能简单地解释这一点,如果可能的话,我会非常感激地用一个简单的小例子来解释这一点。

4

3 回答 3

5

a 中的月份Calendar是从零开始的

公历和儒略历中的第一个月是 JANUARY,即 0

假设公历11是 12 月,并且12是明年的 1 月,这正是您的程序显示它的方式。

于 2012-08-26T11:56:44.600 回答
2

月份从 0 开始,你用 12 引用的实际上是 UNDECIMBER。因此,对于 Jan - Dec,您使用 0 - 11,12 是一个单独的月份,因此它将日历滚动到明年的 1 月。

请参阅: http ://docs.oracle.com/javase/1.5.0/docs/api/constant-values.html#java.util.Calendar.UNDECIMBER

于 2012-08-26T11:56:42.347 回答
1
public final void set(int year,
                      int month,
                      int date)
Sets the values for the calendar fields YEAR, MONTH, and DAY_OF_MONTH. Previous values of other calendar fields are retained. If this is not desired, call clear() first.
Parameters:
year - the value used to set the YEAR calendar field.
month - the value used to set the MONTH calendar field. Month value is 0-based. e.g., 0 for January.
date - the value used to set the DAY_OF_MONTH calendar field.

所以月份范围 0-11 。当您使用 12 时,它将转到明年。

参考:http://docs.oracle.com/javase/6/docs/api/java/util/Calendar.html#set(int, int, int)

于 2012-08-26T11:56:15.983 回答