根据选择起止时间输出日历

代码
  <div>
    
        开始时间:
<asp:TextBox ID="txtStartTime" runat="server"></asp:TextBox>
&nbsp;结束时间:<asp:TextBox ID="txtEndTime" runat="server"></asp:TextBox>
&nbsp;
        
<asp:Button ID="Button1" runat="server" Text="查询" onclick="Button1_Click" />
    
</div>

 

 

代码
    protected void Button1_Click(object sender, EventArgs e)
        {
            
//得到开始和结束时间
            DateTime startTime = Convert.ToDateTime(txtStartTime.Text);
            DateTime endTime 
= Convert.ToDateTime(txtEndTime.Text);
            
//得到起始日期和结束日期是星期几
            int sDayOfWeek = (int)startTime.DayOfWeek;
            
int eDayOfWeek = (int)endTime.DayOfWeek;
            
//将起始日期移动到当前周的周一
            startTime = startTime.AddDays(Convert.ToInt32("-" + (sDayOfWeek - 1)));

            StringBuilder sb 
= new StringBuilder();
            
//得到结束日期和起始日期的差
            int day = (endTime - startTime).Days;

            sb.Append(
"<table border=\"1\">");
            sb.Append(
"<tr>");
            sb.Append(
"<th>&nbsp;</th>");
            sb.Append(
"<th>一</th>");
            sb.Append(
"<th>二</th>");
            sb.Append(
"<th>三</th>");
            sb.Append(
"<th>四</th>");
            sb.Append(
"<th>五</th>");
            sb.Append(
"<th>六</th>");
            sb.Append(
"<th>日</th>");
            sb.Append(
"</tr>");
            
//设置为第一周
            int week = 1;

            sb.Append(
"<tr>\r\n");
            sb.Append(
"<td>第" + week + "周</td>");
            
/*因为酒店入住开始时间和结束时间不可能是同一天(日历控件设置不能选择同一天,因为第一天入住第二天退房的),所以这里循环不能<=day*/

            
//得到最后一天
            endTime = endTime.AddDays(-1);

            
for (int i = 0; i < day; i++)
            {
                
//当不是第一周并且当前日是周一的情况下,创建一行
                if (i != 0 && (int)startTime.AddDays(i).DayOfWeek == 1)
                {
                    sb.Append(
"</tr>\r\n");
                    sb.Append(
"<tr>\r\n");
                    sb.Append(
"<td>第" + ++week + "周</td>");
                }
                
//添加相应的时间
                sb.Append("<td>" + startTime.AddDays(i).ToString("yyyy-MM-dd"+ "</td>\r\n");
               
                
//如果当前日期等于结束日期并且当前日期不是礼拜天,则计算出合并几个单元格
                if (startTime.AddDays(i) == endTime && (int)startTime.AddDays(i).DayOfWeek != 0)
                {
                    sb.Append(
"<td colspan=\"" + (7 - (int)endTime.DayOfWeek) + "\">&nbsp;</td>");
                }
            }

            sb.Append(
"</tr>\r\n");

            sb.Append(
"</table>\r\n");

            Response.Write(sb.ToString());
        }

 

 

posted @ 2011-01-10 15:59  唔愛吃蘋果  阅读(465)  评论(0编辑  收藏  举报