ASP.NET MVC示例:
@{
int currentMonth = DateTime.Now.Month;
int currentYear = DateTime.Now.Year;
DateTime firstDay = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1);
int daysInCurrentMonth = DateTime.DaysInMonth(firstDay.Year, firstDay.Month);
DateTime lastDay = new DateTime(currentYear, currentMonth, daysInCurrentMonth);
// Sunday casted to int gives 0 but that will not work for us, we need 7 to be able to calculate number of empty cells correctly
int dayOfWeekFirst = ((int)firstDay.DayOfWeek > 0) ? (int)firstDay.DayOfWeek : 7;
int dayOfWeekLast = ((int)lastDay.DayOfWeek > 0) ? (int)lastDay.DayOfWeek : 7;
}
<tr align="center">
<!-- filling up space of previous month -->
@for (int a = 1; a < dayOfWeekFirst; a++)
{
@:<td></td>
}
<!-- filling up space of current month -->
@for (int i = 1; i <= daysInCurrentMonth; i++)
{
DateTime renderedDay = new DateTime(firstDay.Year, firstDay.Month, i);
// if Sunday
if (renderedDay.DayOfWeek == DayOfWeek.Sunday)
{
@:<td class="calendar-holiday">@i</td></tr><tr align="center">
}
// if Saturday
else if (renderedDay.DayOfWeek == DayOfWeek.Saturday)
{
@:<td class="calendar-holiday">@i</td>
}
// if normal day
else
{
@:<td>@i</td>
}
}
<!-- filling up space of next month -->
@for (int a = 1; a <= 7-dayOfWeekLast; a++)
{
@:<td></td>
}
</tr>
https://forums.asp.net/t/1695201.aspx?Making+a+Calendar+table+