2013-07-30 32 views
0

我對內部Java工作和日曆一個小問題,我不明白爲什麼當我使用例如:的Calendar.MONTH和內部工作

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

若我打印mesInt,如果實際月份是2月我得到mesInt = 1;

是有任何特別的理由?我想知道,因爲我和我的數據庫之前有問題的,如果可以通過0月份知道開始的解決方案,我想。

感謝所有,和抱歉,如果問題是重複我的天堂沒有發現它。

PD:我知道這是從零開始的,但我想知道對於真正的原因。

PD2:SRY我的英語不好。我知道解決方案,我想知道原因。

回答

4

文檔狀態的第一個月爲0

我想知道真正的原因。

我懷疑從0開始是容易計算。我不確定任何人會承認設計日曆。也許這是有道理的,因爲許多年的數字,AM/PM等從0開始。每週的BTW天開始於1.

知道如果有可能知道解決方案。

使用

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

BTW對我來說陌生的一個是UNIDECIMBER當單慈平均11不是13

+0

我想到了幾天的日子,但我不反對任何posstive結論。我知道這個jejeje,我想知道那jejeje的原因。 – Deckard27

+0

Unidecimber是日曆中的另一個神祕莫測,或許他們爲其他星球準備了日曆?也許是因爲java中的所有索引都從0開始?這可能是一個解決方案,有時occam剃刀我們的解決方案。 – Deckard27

0

月份是0爲主。我不知道爲什麼......

因此,當使用getset與月份時,您需要記住根據需要+1或-1。

Calendar c = Calendar.getInstance(); 
int mesInt = c.get(Calendar.MONTH) + 1; 
c.set(Calendar.MONTH, mesInt - 1); 
0

月在從zeroCalendar開始就意味着January -> 0February -> 1

0

的Calendar.MONTH的規格如下:對於GET

場數和集指示一個月。這是一個日曆特定的值。格里高利和朱利安曆法中的第一個月是JANUARY,它是0;最後一個取決於一年中的月數。

基本上所有的實際目的:一月份爲0,十二月份爲11

0

我敢打賭,這是出於同樣的原因數組的下標從0開始。這只是它是如何。 2月通常顯示爲「2」,但顯示或打印值與在代碼中使用它們不同。