对象日历有什么作用?

时间:2011-07-07 03:27:27

标签: java 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()

也存在同样棘手的问题

4 个答案:

答案 0 :(得分:4)

Calendar.get(i) i代表ERAYEARMONTH等字段。

例如,calendar.get(1)calendar.get(Calendar.YEAR)相同,依此类推。

答案 1 :(得分: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,您的代码不会打印出来,因此时间的不确定性。

答案 2 :(得分:1)

java.util.Calendar提供的API设计不是很好,因为您的混淆说明了这一点。但请看一下JavaDoc for get()。 int值用于表示要获取其值的字段。查看该JavaDoc中列出的所有成员,称为“字段编号...”,例如YEAR。因此calendar.get(Calendar.YEAR)等于2011

答案 3 :(得分:0)

对于许多常见的Date相关场景,Calendar类是一种过度杀伤。历史有点如下:发现Date类在操作日期对象时存在许多不足之处。因此引入了Calendar类。但是,已经证明Calendar类是许多常见日期相关场景的过度设计解决方案。

阅读Javadoc以更好地理解Calendar类。