簡體   English   中英

獲取每個月的周數

[英]Get week counts in every month

我正在嘗試根據月的周數創建一個包含一些動態列的表。 我必須動態創建它,因為每年,月的周數可能不同。

GregorianCalendar _gc = new GregorianCalendar();
string htmlCode = "<table><thead><tr>";

for (int m = 1; m <= 12; m++)
{
    int weekCount = //THAT'S THE MISSING PART
    htmlCode += "<th colspan=\"" + weekCount + "\" style=\"padding: 0; margin: 0; border: none; width: 8.3333%;\">" + m + "</th>";
}

htmlCode += "</tr><tr>";

for (int w = 1; w <= 52; w++)
{
    htmlCode += "<th style=\"padding: 0; margin: 0; border: none; width: 1.923%;\">" + w + "</th>";
}

htmlCode += "</tr></thead></table>";

在第一個循環中,我正在創建表標題的第一行(月)。 在第二個循環中,我正在創建標題的第二行(周)。 我需要周數才能正確 colspan。 輸出應該是這樣的:

 table { width: 1000px; text-align: center; margin: 0 auto; padding: 0; }
 <table border="1"> <thead style="padding: 0; margin: 0; width: 100%;"> <tr style="padding: 0; margin: 0;"> <th colspan="5" style="padding: 0; margin: 0; border: none; width: 8.3333%;">JAN</th> <th colspan="4" style="padding: 0; margin: 0; border: none; width: 8.3333%;">FEB</th> <th colspan="4" style="padding: 0; margin: 0; border: none; width: 8.3333%;">MAR</th> <th colspan="5" style="padding: 0; margin: 0; border: none; width: 8.3333%;">APR</th> <th colspan="4" style="padding: 0; margin: 0; border: none; width: 8.3333%;">MAY</th> <th colspan="4" style="padding: 0; margin: 0; border: none; width: 8.3333%;">JUN</th> <th colspan="4" style="padding: 0; margin: 0; border: none; width: 8.3333%;">JUL</th> <th colspan="5" style="padding: 0; margin: 0; border: none; width: 8.3333%;">AUG</th> <th colspan="5" style="padding: 0; margin: 0; border: none; width: 8.3333%;">SEP</th> <th colspan="4" style="padding: 0; margin: 0; border: none; width: 8.3333%;">OCT</th> <th colspan="4" style="padding: 0; margin: 0; border: none; width: 8.3333%;">NOV</th> <th colspan="4" style="padding: 0; margin: 0; border: none; width: 8.3333%;">DEC</th> </tr> <tr style="padding: 0; margin: 0;"> <th style="padding: 0; margin: 0; border: none; width: 1.923%;">1</th> <th style="padding: 0; margin: 0; border: none; width: 1.923%;">2</th> <th style="padding: 0; margin: 0; border: none; width: 1.923%;">3</th> <th style="padding: 0; margin: 0; border: none; width: 1.923%;">4</th> <th style="padding: 0; margin: 0; border: none; width: 1.923%;">5</th> <th style="padding: 0; margin: 0; border: none; width: 1.923%;">1</th> <th style="padding: 0; margin: 0; border: none; width: 1.923%;">2</th> <th style="padding: 0; margin: 0; border: none; width: 1.923%;">3</th> <th style="padding: 0; margin: 0; border: none; width: 1.923%;">4</th> <th style="padding: 0; margin: 0; border: none; width: 1.923%;">1</th> <th style="padding: 0; margin: 0; border: none; width: 1.923%;">2</th> <th style="padding: 0; margin: 0; border: none; width: 1.923%;">3</th> <th style="padding: 0; margin: 0; border: none; width: 1.923%;">4</th> <th style="padding: 0; margin: 0; border: none; width: 1.923%;">1</th> <th style="padding: 0; margin: 0; border: none; width: 1.923%;">2</th> <th style="padding: 0; margin: 0; border: none; width: 1.923%;">3</th> <th style="padding: 0; margin: 0; border: none; width: 1.923%;">4</th> <th style="padding: 0; margin: 0; border: none; width: 1.923%;">5</th> <th style="padding: 0; margin: 0; border: none; width: 1.923%;">1</th> <th style="padding: 0; margin: 0; border: none; width: 1.923%;">2</th> <th style="padding: 0; margin: 0; border: none; width: 1.923%;">3</th> <th style="padding: 0; margin: 0; border: none; width: 1.923%;">4</th> <th style="padding: 0; margin: 0; border: none; width: 1.923%;">1</th> <th style="padding: 0; margin: 0; border: none; width: 1.923%;">2</th> <th style="padding: 0; margin: 0; border: none; width: 1.923%;">3</th> <th style="padding: 0; margin: 0; border: none; width: 1.923%;">4</th> <th style="padding: 0; margin: 0; border: none; width: 1.923%;">1</th> <th style="padding: 0; margin: 0; border: none; width: 1.923%;">2</th> <th style="padding: 0; margin: 0; border: none; width: 1.923%;">3</th> <th style="padding: 0; margin: 0; border: none; width: 1.923%;">4</th> <th style="padding: 0; margin: 0; border: none; width: 1.923%;">1</th> <th style="padding: 0; margin: 0; border: none; width: 1.923%;">2</th> <th style="padding: 0; margin: 0; border: none; width: 1.923%;">3</th> <th style="padding: 0; margin: 0; border: none; width: 1.923%;">4</th> <th style="padding: 0; margin: 0; border: none; width: 1.923%;">5</th> <th style="padding: 0; margin: 0; border: none; width: 1.923%;">1</th> <th style="padding: 0; margin: 0; border: none; width: 1.923%;">2</th> <th style="padding: 0; margin: 0; border: none; width: 1.923%;">3</th> <th style="padding: 0; margin: 0; border: none; width: 1.923%;">4</th> <th style="padding: 0; margin: 0; border: none; width: 1.923%;">5</th> <th style="padding: 0; margin: 0; border: none; width: 1.923%;">1</th> <th style="padding: 0; margin: 0; border: none; width: 1.923%;">2</th> <th style="padding: 0; margin: 0; border: none; width: 1.923%;">3</th> <th style="padding: 0; margin: 0; border: none; width: 1.923%;">4</th> <th style="padding: 0; margin: 0; border: none; width: 1.923%;">1</th> <th style="padding: 0; margin: 0; border: none; width: 1.923%;">2</th> <th style="padding: 0; margin: 0; border: none; width: 1.923%;">3</th> <th style="padding: 0; margin: 0; border: none; width: 1.923%;">4</th> <th style="padding: 0; margin: 0; border: none; width: 1.923%;">1</th> <th style="padding: 0; margin: 0; border: none; width: 1.923%;">2</th> <th style="padding: 0; margin: 0; border: none; width: 1.923%;">3</th> <th style="padding: 0; margin: 0; border: none; width: 1.923%;">4</th> </tr> </thead> </table>

代碼風格的解決方案:

Enumerable
    .Range(1,12)
    .Select(month => new DateTime(2020, month, 01).AddMonths(1).AddDays(-1))
    .Select(d => Math.Ceiling((d.Day + (int)(new DateTime(d.Year, d.Month, 1).DayOfWeek)) / 7.0))
    .ToArray();

基本上,獲取每個月的天數,由第一天的星期幾抵消,將其除以 7 的上限得到該月所需的整周數。

計算的總周數將大於 52,因為月共享周。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM