我对内部java工作和日历有一个小问题,我不明白为什么当我使用例如:
Calendar c = Calendar.getInstance();
mesInt = c.get(Calendar.MONTH);
System.out.println(mesInt);
如果那时我打印mesInt,如果实际月份是2月我获得mesInt = 1;
有什么特别的原因吗?我想知道,因为我之前在使用我的数据库时遇到了问题,我想如果有可能知道本月0开始的解决方案。
谢谢大家,如果问题重复,我很抱歉,我还没找到。
PD:我知道这是基于零的,但我想知道真正的原因。 PD2:为我糟糕的英语而烦恼。我知道解决方案我想知道原因。答案 0 :(得分:4)
文档说明第一个月是0.
我想知道真正的原因。
我怀疑从0开始更容易计算。我不确定任何一个人会承认设计日历。也许它在当时是有意义的,因为许多年份的编号,上午/下午等从0开始。本周BTW天从1开始。
知道我想知道解决方案是否可行。
使用
int mesInt = c.get(Calendar.MONTH) + 1;
顺便说一句,对我来说,奇怪的是UNIDECIMBER当uni-deci意味着11而不是13。
答案 1 :(得分:0)
月份为0。我不确定原因......
因此,在月份中使用get
或set
时,您需要记住要求的+1或-1。
Calendar c = Calendar.getInstance();
int mesInt = c.get(Calendar.MONTH) + 1;
c.set(Calendar.MONTH, mesInt - 1);
答案 2 :(得分:0)
Calendar
中的月份从zero
开始,这意味着January -> 0
February -> 1
等。
答案 3 :(得分:0)
Calendar.MONTH规范如下:
get和set的字段编号,表示月份。这是特定于日历的值。格列高利历和朱利安历的一年中的第一个月是1月,即0;最后一个取决于一年中的月数。
基本上用于所有实际目的:1月为0,12月为11。
答案 4 :(得分:0)
我敢打赌,出于同样的原因,数组索引从0开始。它就是这样的。二月通常显示为“2”,但显示或打印值与在代码中使用它们不同。