2012-01-10 148 views
1

我與Calendar類演奏並得到了一些混亂的結果:Calendar類混亂

Calendar thisCal = Calendar.getInstance(); 
    thisCal.clear(); 

    thisCal.set(2012,12,8); 

    System.out.println("Year is: " + thisCal.get(Calendar.YEAR)); 
    System.out.println("Month is: " + thisCal.get(Calendar.MONTH)); 
    System.out.println("Day of Month is: " + thisCal.get(Calendar.DAY_OF_MONTH)); 

輸出:

新年是:2013

月是:0

日月份是:8

困惑我!

+0

的Javadoc你會讀到和困惑不再是你會,尤達。 – mre 2012-01-10 17:13:42

回答

6

MONTH場是零(來自一些POSIX API繼承,我認爲)開始。因此,您將其設置爲2012年的第13個月,將其解釋爲2013年的第一個月(編號爲0)。

如果將lenient屬性設置爲false,則它會拋出異常。

+0

感謝您的洞察力。 – user973718 2012-01-10 18:26:24

1

請閱讀日曆的API文檔。

月份從零開始。

因此,如果你設置12個月,它實際上是在「13個月」,造成了「奇怪」的結果