如何在一个月的表格中显示完整的一周

时间:2016-01-13 09:23:31

标签: javascript java html

我需要在一个月内显示完整的一周(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循环以显示整周。请帮帮我。

1 个答案:

答案 0 :(得分:0)

您的逻辑排除了一周剩余的日子,因为您只包含属于您规定的月份的项目。

while (c.get(Calendar.MONTH) == month) {
    ....
}

你应该添加一些逻辑以检查最后一个'周'是否有7天,如果没有,那么添加缺少的项目。