首页 » 程序设计 » 如何使用asp.net(C#)编写一个日历

发表时间:2011-9-3 0:15:54 | 分类:程序设计 | 阅读:687

C#内置的时间类很丰富,利用这些类可以轻松实现日历的界面,这里做了一个简单的示例。其实思路很简单,使用一个7行(一个月最多有6个星期,首行放星期的名称)* 7列(每个星期有7天)的表格来存放日期。

string CalendarHtml(int year, int month, int day)
{
    StringBuilder sb = new StringBuilder();

    // 1、指定一个月,看它有几天
    int days = DateTime.DaysInMonth(year, month);

    // 2、看看这个月的第一天是星期几
    DateTime dt = DateTime.Parse(string.Format("{0}-{1}-1", year, month));
    int wk = (int)dt.DayOfWeek;

    int dayIndex = 0;
    sb.Append("<table border='1'>");
    sb.Append("<tr>");
    sb.AppendFormat("<th colspan='7'>{0}-{1}-{2}</th>", year, month, day);
    sb.Append("</tr>");
    sb.Append("<tr>");
    sb.Append("<th>日</th><th>一</th><th>二</th><th>三</th><th>四</th><th>五</th><th>六</th>");
    sb.Append("</tr>");
    for (int i = 0; i < 6; i++) // 一个月最多有6周
    {
        sb.Append("<tr>");
        for (int j = 0; j < 7; j++) // 每个星期有7天
        {
            if (i == 0) // 第一周
            {
                if (wk > j)
                {
                    sb.Append("<td>&nbsp;</td>");
                }
                else
                {
                    dayIndex++;
                    sb.AppendFormat("<td>{0}</td>", dayIndex);
                }
            }
            else
            {
                if (dayIndex < days)
                {
                    dayIndex++;
                    sb.AppendFormat("<td>{0}</td>", dayIndex);
                }
            }
        }
        sb.Append("</tr>");
    }
    sb.Append("</table>");
    return sb.ToString();
}

程序运行之后最终的显示效果如下:

当然,单单是只显示了日期还是不够的,我们还可以在里面加些事件,如果是应用于Web应用程序那是非常方便的事情。

评论列表


#1 作者: 西安私家侦探 评论时间:2011-10-24 13:42:13
支持一下,博主技术貌似很强大

发表评论


昵称:
邮件:
链接: