2

我的问题可以通过以下场景轻松创建:

 //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 吗?

感谢您的所有帮助和关注,还请验证您所指的来源。

用户1442080

4

2 回答 2

7

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

您实际上创建了一个表示 7 月 4 日的对象,这恰好是一个星期三,也就是该周的第四天。

于 2012-06-07T11:57:17.387 回答
4

应始终查找Calendar.{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)which 将为这两个实例返回不同的整数值。

于 2013-06-11T07:23:51.587 回答