2012-12-24 43 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年。我在大多数情况下基本上删除了这段代码,现在它工作正常。