我需要在一个月内显示完整的一周(4-5周)。即如果一个月从星期五(1月1日)开始,它仍应显示在同一周。但就我而言,情况并非如此。随着1月1日从星期五开始,它将显示为一个单独的一周。 这是我的两个小提琴: https://jsfiddle.net/0Lxy8097/
https://jsfiddle.net/brbeekbg/
正如你在两个小提琴中看到的那样,12月31日是星期四,1月1日是星期五。但由于1月1日是一个单独的月份,它显示为与周五不同的一周。但我不希望这种情况发生。我希望我的一周能在一张桌子上显示。
这是我的后端函数,我正在为它编写逻辑。
public static List<List<MDDate>> getNumberOfWeeks(int year, int month) {
List<List<MDDate>> weekdates = new ArrayList<List<MDDate>>();
List<MDDate> dates = new ArrayList<MDDate>();
Calendar c = Calendar.getInstance();
c.set(Calendar.YEAR, year);
c.set(Calendar.MONTH, month);
c.set(Calendar.DAY_OF_MONTH, 1);
dates.add(MDDate.fromDate(c.getTime()));
while (c.get(Calendar.MONTH) == month) {
if (c.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) {
dates.add(MDDate.fromDate(c.getTime()));
weekdates.add(dates);
} else if (c.get(Calendar.DAY_OF_WEEK) == Calendar.MONDAY) {
dates = new ArrayList<MDDate>();
dates.add(MDDate.fromDate(c.getTime()));
}
c.add(Calendar.DAY_OF_MONTH, 1);
}
if (dates.size() < 2) {
c.add(Calendar.DAY_OF_MONTH, -1);
dates.add(MDDate.fromDate(c.getTime()));
weekdates.add(dates);
}
return weekdates;
}
我应该在逻辑上做出哪些改变才能使其正确。我哪里去了。我应该在什么逻辑上添加我的while循环以显示整周。请帮帮我。
答案 0 :(得分:0)
您的逻辑排除了一周剩余的日子,因为您只包含属于您规定的月份的项目。
while (c.get(Calendar.MONTH) == month) {
....
}
你应该添加一些逻辑以检查最后一个'周'是否有7天,如果没有,那么添加缺少的项目。