不确定get(Calendar.DAY_OF_WEEK)返回的内容

时间:2012-06-07 11:45:52

标签: date calendar get dayofweek gregorian-calendar

我的问题可以通过以下方案轻松创建:

 //create a gregorian calendar object that set the date and time as 4th June 2012 at 10:30PM
 Calendar calendar = new GregorianCalendar(2012, 6, 4, 22, 30);

 //when I print out these:
 System.out.println(calendar.get(Calendar.DAY_OF_WEEK));
 System.out.println(calendar.get(Calendar.MINUTE));
 System.out.println(calendar.get(Calendar.HOUR));
 System.out.println(calendar.get(Calendar.DATE));
 System.out.println(calendar.get(Calendar.MONTH));
 System.out.println(calendar.get(Calendar.YEAR));

 //output reads as:
 4
 30
 10
 4
 6
 2012

 //so does calendar.get(Calendar.DAY_OF_WEEK) == calendar.get(Calendar.DATE) ???

为了让每个人都清楚2012年6月4日是星期一,所以calendar.get(Calendar.DAY_OF_WEEK)不应该在一周的第一天返回0吗?

感谢您的所有帮助和疑虑,请同时验证您所指的来源。

user1442080

2 个答案:

答案 0 :(得分:6)

java Calendar类中的月份是从0开始的。所以六月是第5个月。

你实际创建了一个代表7月4日的对象,恰好是星期三,也就是那个星期的第四天。

答案 1 :(得分:4)

应始终查找日历返回的值。{field} ,例如像Calendar.SUNDAY,Calendar.MONDAY,Calendar.JANUARY,Calendar.MARCH等等。 这是因为, Calendar。{field} 返回的值取决于创建Calendar实例时指定的TimeZone。 您可以通过创建具有不同时区的两个日历实例来尝试此操作:

Calendar.getInstance("BST")

Calendar.getInstance() // default timezone

现在尝试获取calendar.get(Calendar.DAY_OF_WEEK),这将为这两个实例返回不同的整数值。