我目前正在ASP.Net C#中编写一个小日历.目前为了生成周的行,我执行以下循环:
var iWeeks = 6;
for (int w = 0; w < iWeeks; w++) {
Run Code Online (Sandbox Code Playgroud)
这样可以正常工作,但是,有些月只有5周,而在极少数情况下,有4个月.
如何计算特定月份所需的行数?
这是我正在创建的一个例子:

正如您在上个月所看到的那样,只需要5行.本月(2008年8月)从星期六开始,到第6周/星期一星期一结束.
在谷歌上找到的图像
这是我正在创建的一个例子:

正如您在上个月所看到的那样,只需要5行.本月(2008年8月)从星期六开始,到第6周/星期一星期一结束.
在谷歌上找到的图像
这是执行此操作的方法:
public int GetWeekRows(int year, int month)
{
DateTime firstDayOfMonth = new DateTime(year, month, 1);
DateTime lastDayOfMonth = new DateTime(year, month, 1).AddMonths(1).AddDays(-1);
System.Globalization.Calendar calendar = System.Threading.Thread.CurrentThread.CurrentCulture.Calendar;
int lastWeek = calendar.GetWeekOfYear(lastDayOfMonth, System.Globalization.CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday);
int firstWeek = calendar.GetWeekOfYear(firstDayOfMonth, System.Globalization.CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday);
return lastWeek - firstWeek + 1;
}
Run Code Online (Sandbox Code Playgroud)
您可以通过修改System.Globalization.CalendarWeekRule.FirstFourDayWeek部分来自定义日历周规则.我希望代码是自我解释的.