我目前正在ASP.Net C#中编写一个小日历.目前为了生成周的行,我执行以下循环:
var iWeeks = 6; for (int w = 0; w < iWeeks; w++) {
这样可以正常工作,但是,有些月只有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; }
您可以通过修改System.Globalization.CalendarWeekRule.FirstFourDayWeek部分来自定义日历周规则.我希望代码是自我解释的.