输出当前月份的日历

    xiaoxiao2021-03-25  35

    上一篇有点扩展性不好,因此改造了下生成日历数据的算法,可以供外部调用,源码如下

    public class CalendarHelper     {         public static System.Data.DataTable PrintDay(int year = -1, int month = -1)         {             //获得所有的星期的数组             var weekdays = Enum.GetNames(typeof(DayOfWeek));             if (year <= 0 || year > 9999)                 year = DateTime.Now.Year;             if (month < 1 || month > 12)                 month = DateTime.Now.Month;             //今天周几             DayOfWeek dayOfWeek = DateTime.Now.DayOfWeek;             //该变量用于补空格             int flag = (int)dayOfWeek;                         //switch (dayOfWeek)             //{             //    case DayOfWeek.Sunday: flag = 0; break;             //    case DayOfWeek.Monday: flag = 1; break;             //    case DayOfWeek.Tuesday: flag = 2; break;             //    case DayOfWeek.Wednesday: flag = 3; break;             //    case DayOfWeek.Thursday: flag = 4; break;             //    case DayOfWeek.Friday: flag = 5; break;             //    case DayOfWeek.Saturday: flag = 6; break;             //}             int daysInMonth = DateTime.DaysInMonth(year, month);             //展示日历每行7列,供需要多少行             int row = (flag + daysInMonth) % 7 == 0 ? (flag + daysInMonth) % 7 : (flag + daysInMonth) % 7 + 1;             //存放日历数据的变量             System.Data.DataTable dtCalendar = new System.Data.DataTable();             //列头             for (int i = 0; i < weekdays.Length; i++)             {                 dtCalendar.Columns.Add(weekdays[i]);             }             int columnIndex = 0;             System.Data.DataRow dataRow = null;             if (flag > 0)             {                 //获得下当前日历的列索引                 columnIndex = flag;                 dataRow = dtCalendar.NewRow();                 dtCalendar.Rows.Add(dataRow);                 //填充空格                 for (int j = 0; j < flag; j++)                 {                     dataRow[j] = string.Empty;                 }             }             if (dataRow == null)             {                 dataRow = dtCalendar.NewRow();                 dtCalendar.Rows.Add(dataRow);             }             for (int i = 1; i <= daysInMonth; i++)             {                 dataRow[columnIndex] = i;                 //下一行                 if (columnIndex == 6)                 {                     dataRow = dtCalendar.NewRow();                     dtCalendar.Rows.Add(dataRow);                     columnIndex = 0;                 }                 else                     columnIndex++;             }             dtCalendar.AcceptChanges();             return dtCalendar;         }     }

    控制器代码

    public ActionResult Index() { ViewBag.Calendar = CalendarHelper.PrintDay(); return View(); }

    视图代码

    <table> <tbody> <tr> @{ System.Data.DataTable dtCalendar = ViewBag.Calendar as System.Data.DataTable; foreach (System.Data.DataColumn column in dtCalendar.Columns) { <td>@column.ColumnName</td> } } </tr> </tbody> @{ for (int rowIndex = 0; rowIndex < dtCalendar.Rows.Count; rowIndex++) { <tr> @{ for (int columnIndex = 0; columnIndex < dtCalendar.Columns.Count; columnIndex++) { <td>@dtCalendar.Rows[rowIndex][columnIndex].ToString()</td> } } </tr> } } </table> 测试2017年2月8日15:05:29 结果

    SundayMondayTuesdayWednesdayThursdayFridaySaturday   12345678910111213141516171819202122232425262728    

    转载请注明出处

    转载请注明原文地址: https://ju.6miu.com/read-156120.html

    最新回复(0)