根据选择起止时间输出日历
代码
<div>
开始时间:<asp:TextBox ID="txtStartTime" runat="server"></asp:TextBox>
结束时间:<asp:TextBox ID="txtEndTime" runat="server"></asp:TextBox>
<asp:Button ID="Button1" runat="server" Text="查询" onclick="Button1_Click" />
</div>
开始时间:<asp:TextBox ID="txtStartTime" runat="server"></asp:TextBox>
结束时间:<asp:TextBox ID="txtEndTime" runat="server"></asp:TextBox>
<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> </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) + "\"> </td>");
}
}
sb.Append("</tr>\r\n");
sb.Append("</table>\r\n");
Response.Write(sb.ToString());
}
{
//得到开始和结束时间
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> </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) + "\"> </td>");
}
}
sb.Append("</tr>\r\n");
sb.Append("</table>\r\n");
Response.Write(sb.ToString());
}