2011-07-07 76 views
1

我有對象日曆測試:Calendar是什麼對象?

for (int i = 0; i < 11; i++) 
      System.out.println(calendar.get(i)); 


output: 
1 
2011 
6 
28 
2 
6 
187 
4 
1 
1 
10 

我的問題是如何發生的呢?還有用於API calendar.get()

回答

2

我不明白是什麼問題。 documentation指出您可以獲得您提供的任何字段ID的特定值。

您通常會使用字段常量來獲得特定值(如DAY_OF_MONTHMONTH但任何整數將不提供這0..FIELD_COUNT

的字段ID記錄here的範圍內(儘管這可能在未來改變)所以你的具體值是:

ID Value Description 
-- ----- ----------- 
0  1 Era (BC/AD for Gregorian). 
1 2011 Year. 
2  6 Month (zero-based). 
3  28 Week-of-year. 
4  2 Week-of-month. 
5  6 Date/day-of-month. 
6 187 Day-of-year. 
7  4 Day-of-week. 
8  1 Day-of-week-in-month. 
9  1 AM/PM selector. 
10  10 Hour. 

這是July 6, 2011 AD,地方10:00:00 PM10:59:59 PM(含)之間的分鐘和秒值字段ID 12和13,你的代碼母鹿。不會打印出來,因此時間上的不確定性。

4

Calendar.get(i)i同一棘手問題表示一個字段如ERAYEARMONTH等。

例如,calendar.get(1)相同calendar.get(Calendar.YEAR)等等。

1

java.util.Calendar提供的API不是很好設計,因爲您的混淆說明。不過看看JavaDoc for get()。 int值意味着表示您想要獲取值的字段。查看該JavaDoc中列出的所有成員,如「Field number ...」,如YEAR。所以calendar.get(Calendar.YEAR)將等於2011

0

Calendar類對許多常見的Date相關方案來說是一種矯枉過正。歷史記錄如下:Date類被發現有許多不足之處,它們會操作日期對象。因此引入了Calendar類。但是,Calendar類已被證明是針對許多常見日期相關場景的過度工程解決方案。

閱讀Javadoc以更好地理解Calendar類。