我正在尝试使用日历或公历来迭代并创建日期网格。然而,他们俩似乎都认为2010年8月有30天,9月2日和3日是周末。就好像日历的年份错误,但我已经对该参数进行了三次检查。以下是一些摘录。
startDate.set(2010, 8, 28);
SchedulerCalendar currentDate = (SchedulerCalendar) startDate.clone();
for(int i = 0; i<daysDisplayed; i++){
newDate = new TextView(this);
String dateString = currentDate.get(Calendar.MONTH)+"/"+currentDate.get(Calendar.DATE);
//+"/"+currentDate.get(Calendar.YEAR);
newDate.setText(dateString);
newDate.setId(i+1);
newDate.setWidth(blockWidth);
newDate.setHeight(DATE_HEIGHT);
dateBar.addView(newDate);
currentDate.add(Calendar.DATE, 1);
}
private class SchedulerCalendar extends GregorianCalendar {
@Override
public void add(int field, int value) {
super.add(field, value);
if(this.get(Calendar.DAY_OF_WEEK)==Calendar.SATURDAY) {
if(value>=0) super.add(Calendar.DATE, 2);
if(value<0) super.add(Calendar.DATE, -1);
}
if(this.get(Calendar.DAY_OF_WEEK)==Calendar.SUNDAY) {
if(value>=0) super.add(Calendar.DATE, 1);
if(value<0) super.add(Calendar.DATE, -2);
}
}
}
我强烈怀疑您没有考虑到月份是从 0 开始的这一事实。所以这:
startDate.set(2010, 8, 28);
正在将其设置为九月2010 年 28 日。您还没有说出您期望的日期,但我怀疑您想要 8 月(在 java.util.Calendar 中是第 7 个月)。
我怀疑这就是问题所在,因为October2号和3号是周六和周日。
我可以强烈建议您使用吗乔达时间 http://joda-time.sf.net作为您的日期和时间 API 而不是 java.util.{Date,Calendar}?内置类有很多这样的问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)