2012-06-07 26 views
2

我的问题可以通过以下方案可以轻松创建:不确定得到什么(Calendar.DAY_OF_WEEK)返回

//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日是星期一,所以不宜日历.get(Calendar.DAY_OF_WEEK)返回0作为本周第一天的一部分?

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

user1442080

回答

6

java日历类中的月份是从0开始的。因此,6月是第5个月。

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

+0

谢谢!我也注意到日期也从0开始。所以我实际上创建了一个代表7月5日的对象。 – user1442080

+0

我的荣幸。你也可以看看更直观的时间库:http://joda-time.sourceforge.net/。 (哦,你会如此友善,接受我的答案;-)) –

4

应该总是寻找由日历返回的值。{field}像Calendar.SUNDAY,Calendar.MONDAY,Calendar.JANUARY,Calendar.MARCH等等。 这是因为Calendar。{field}返回的值取决于创建Calendar实例时指定的时区。 您可以通过使用不同的时区创建两个日历情况下,试试这个:

Calendar.getInstance("BST") 

Calendar.getInstance() // default timezone 

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

+0

calendar.get(Calendar.DAY_OF_WEEK)将如何返回不同的整数值?星期几的值是常量,您仍然必须将DAY_OF_WEEK的返回值与Calendar.FRIDAY(例如)进行比较。一周中第一天的值可能会根据时区而改变,但DAY_OF_WEEK返回的值将始终需要与java日历常数对齐。 –