2014-07-03 106 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