2014-07-03 48 views
1

我是一个3个月大的java学生。对于我的一个模块,我试图在星期二的第一天做一个星期几(所以真正的星期五现在应该在索引3),但它没有显示预期的结果。日历不能正常工作

我通过扫描仪输入当天。 以下是有关的代码和输出:

Calendar c= Calendar.getInstance(); 
    c.setFirstDayOfWeek(Calendar.TUESDAY); 

    c.setTime(date); 
    int dayOfWeek=c.get(Calendar.DAY_OF_WEEK); 
    System.out.println(dayOfWeek); 



Output: 

Enter the date(dd/mm/yyyy): 
03/07/2014 
6 

不知道我错了。试了很多谷歌搜索,甚至设置minimalDAysOfFirstWeek,但没有任何工作。我想要的是03/07/2014将显示为索引3.如何实现?

回答

6

我想你已经误解了setFirstDayOfWeek的目的。

不改变c.get(Calendar.DAY_OF_WEEK)在所有工作 - 它改变调用c.get(Calendar.WEEK_OF_MONTH)c.get(Calendar.WEEK_OF_YEAR),按照文档的结果:

设置或获取WEEK_OF_MONTHWEEK_OF_YEAR领域时,日历必须确定第一以月或年的周作为参考点。一个月或一年的第一周定义为从getFirstDayOfWeek()开始的最早的七天期间,并且至少包含该月份或年份的getMinimalDaysInFirstWeek()天。

换句话说,星期天总是星期天......但是6月10日星期日是在6月11日星期一的同一星期还是取决于什么被认为是星期的第一天。

0
switch (c.get(Calendar.DAY_OF_WEEK)) { 
case Calendar.TUESDAY: 
    return 0; 

case Calendar.WEDNESDAY: 
    return 1; 

// And so on... 

default: 
    break; 
} 
+0

我认为一个解释会对Op和更多访问者更有帮助 – reporter