我有對象日曆測試: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()
我有對象日曆測試: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()
我不明白是什麼問題。 documentation指出您可以獲得您提供的任何字段ID的特定值。
您通常會使用字段常量來獲得特定值(如DAY_OF_MONTH
或MONTH
但任何整數將不提供這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 PM
和10:59:59 PM
(含)之間的分鐘和秒值字段ID 12和13,你的代碼母鹿。不會打印出來,因此時間上的不確定性。
在Calendar.get(i)
i
同一棘手問題表示一個字段如ERA
,YEAR
,MONTH
等。
例如,calendar.get(1)
相同calendar.get(Calendar.YEAR)
等等。
由java.util.Calendar
提供的API不是很好設計,因爲您的混淆說明。不過看看JavaDoc for get()。 int值意味着表示您想要獲取值的字段。查看該JavaDoc中列出的所有成員,如「Field number ...」,如YEAR
。所以calendar.get(Calendar.YEAR)
將等於2011
。
Calendar類對許多常見的Date相關方案來說是一種矯枉過正。歷史記錄如下:Date類被發現有許多不足之處,它們會操作日期對象。因此引入了Calendar類。但是,Calendar類已被證明是針對許多常見日期相關場景的過度工程解決方案。
閱讀Javadoc以更好地理解Calendar類。