2012-12-24 83 views
2

我有一個變量來存儲星期的開始日期,但是當我從2012年前進到2013年時,它不會更新年份。Java日曆添加不增加年份

日和月加入適當的,所以它正確地從26/12到02/01去,但它停留在2012年

// roll one week forward 
Calendar cal = Calendar.getInstance(); 
cal.setTimeInMillis(mPrefsHelper.getWeekStart()); 
cal.add(Calendar.WEEK_OF_YEAR, 1); 
+0

如果您檢查/調試'mPrefsHelper.getWeekStart()'的值會更好。 –

+1

如果你檢查/打印/調試你的'mPrefsHelper.getWeekStart()'方法的值會更好。 –

回答

1

java.util.Calendar

First Week 

的javadoc日曆使用兩個參數定義特定於區域的七天周:一週的第一天和第一週的最短日期(從1到7)。這些數字取自構建日曆時的語言環境資源 數據。它們也可以通過用於設置它們的值的方法明確指定 。

設置或獲取WEEK_OF_MONTH或WEEK_OF_YEAR字段時,日曆必須將月份或年份的第一週確定爲參考點 。一個月或一年的第一週定義爲 從getFirstDayOfWeek()和 開始的最早七天期間,該期間至少包含該月的getMinimalDaysInFirstWeek()天或 年。在第一週之前,編號爲......,-1,0的周;周編號 2,3,...按照它。請注意,由 get()返回的規範化編號可能不同。例如,特定的日曆子類可能會在前一個 年的第n周的第1周前指定一週。

它是語言環境特定的。就你而言,如果一週中包含來自新年的日子,那麼它將被計爲新一年的第1周。

0

道歉,並感謝您的所有答覆。我的問題是具體到我的代碼,在某些時候我這樣做:

mCalendar.clear(); 
mCalendar.setFirstDayOfWeek(Calendar.MONDAY); 
mCalendar.set(Calendar.WEEK_OF_YEAR, week); 
mCalendar.set(Calendar.YEAR, year); 

和使用,我從我與我以前的代碼得到的日期獲得的值。

因此,它得到一個日期(例如星期三2月1日),其具有1周和2013年的一個星期。它清除日曆並且正確設置周和年,然而,然後我再次調用這個位,以某種方式設定2012年。我在大多數情況下基本上刪除了這段代碼,現在它工作正常。