2016-01-13 45 views
0

我有要求在哪裏需要顯示一個月的完整一週(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

確定您複製了該方法的所有源代碼?因爲你只在上面的代碼中處理星期一和星期日。你週日有'if',星期一有'if if'。其他日子不應該有其他聲明嗎?它不會解決你的問題,它只是幫助我們提供幫助。 – Igorovics

回答

0

您的邏輯是排除其餘的一個星期的日子,因爲你只包括屬於你規定的月份的物品。

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

您應該在添加一些邏輯來檢查,如果最後的「周」有7天,它如果沒有的話添加缺少的物品。

+0

我應該在哪裏寫我的邏輯? –

相關問題