0

我对内部 java 工作和日历有一个小问题,我不明白为什么当我使用例如:

    Calendar c = Calendar.getInstance();
    mesInt = c.get(Calendar.MONTH); 
    System.out.println(mesInt);

如果然后我打印 mesInt,如果实际月份是 2 月,我得到 mesInt = 1;

有什么特别的原因吗?我想知道,因为我之前的数据库有问题,我想知道是否有可能知道当月从 0 开始的解决方案。

谢谢大家,很抱歉,如果问题重复我还没有找到它。

PD:我知道这是从零开始的,但我想知道真正的原因。

PD2:对不起我的英语不好。我知道解决方案,我想知道原因。

4

5 回答 5

4

文档说明第一个月是 0。

我想知道真正的原因。

我怀疑从 0 开始更容易计算。我不确定是否有人会承认设计日历。也许这在当时是有道理的,因为多年来的许多编号,AM/PM 等从 0 开始。顺便说一句,一周中的几天从 1 开始。

知道我想知道是否有可能知道解决方案。

利用

int mesInt = c.get(Calendar.MONTH) + 1; 

顺便说一句,当 uni-deci 表示 11 而不是 13 时,奇怪的是 UNIDECIMBER。

于 2013-07-30T11:44:45.603 回答
0

月份是从 0 开始的。我不确定为什么...

因此,当使用任一月份getset月份时,您需要根据需要记住 +1 或 -1。

Calendar c = Calendar.getInstance();
int mesInt = c.get(Calendar.MONTH) + 1;
c.set(Calendar.MONTH, mesInt - 1);
于 2013-07-30T11:45:01.560 回答
0

Calendar从它开始的几个月zero意味着January -> 0 February -> 1等等。

于 2013-07-30T11:45:13.347 回答
0

Calendar.MONTH 的规格如下:

get 和 set 的字段编号,指示月份。这是特定于日历的值。公历和儒略历中的第一个月是 JANUARY,即 0;最后一个取决于一年中的月数。

基本上出于所有实际目的:一月是 0,十二月是 11。

于 2013-07-30T11:49:36.270 回答
0

我敢打赌,出于同样的原因,数组索引从 0 开始。就是这样。二月通常显示为“2”,但显示或打印值与在代码中使用它们不同。

于 2013-07-30T11:52:07.403 回答