|
今天遇到了个关于时间的操作,而作为初学者的我,并不是很了解时间函数的操作,所以就园里问了下别人,经别人的帮助我自己实现了如何在某个时间段获取星期。
代码如下: 复制代码 代码如下: string start = Request.Form.Get("date2").ToString(); //获取开始日期,此控件为html控件 string end = Request.Form.Get("date3").ToString(); //获取结束日期,此控件为html控件 string[] start_date = start.Split('-'); //分离出开始日期的年、月、日 string[] end_date = end.Split('-'); //分离出结束日期的年、月、日 DateTime dt1 = new DateTime(int.Parse(start_date[0]), int.Parse(start_date[1]), int.Parse(start_date[2])); DateTime dt2 = new DateTime(int.Parse(end_date[0]), int.Parse(end_date[1]), int.Parse(end_date[2])); TimeSpan ts = dt2 - dt1; //定义全局变量public string table_td = "";然后进行赋值 table_td = "<table><tr><td>星期一</td><td>星期二</td><td>星期三</td><td>星期四</td><td>星期五</td><td>星期六</td><td>星期天</td></tr>"; //判断开始时间为星期几,如,如果是星期三,则需要前面空出2个单元格出来,以此类推 switch (dt1.DayOfWeek.ToString()) { case "Tuesday": table_td += "<tr><td></td>"; break; case "Wednesday": table_td += "<tr><td></td><td></td>"; break; case "Thursday": table_td += "<tr><td></td><td></td><td></td>"; break; case "Friday": table_td += "<tr><td></td><td></td><td></td><td></td>"; break; case "Saturday": table_td += "<tr><td></td><td></td><td></td><td></td><td></td>"; break; case "Sunday": table_td += "<tr><td></td><td></td><td></td><td></td><td></td><td></td>"; break; } //递归至结束时间 for (int i = 0; i < ts.Days; i++) { string sdate = dt1.AddDays(i).Day.ToString(); switch (dt1.AddDays(i).DayOfWeek.ToString()) { case "Monday": table_td += "<tr><td><a onmouseover=selStation(1); onmouseout=chide();>" + sdate + "</a></td>"; break; case "Tuesday": table_td += "<td><a onmouseover=selStation(1); onmouseout=chide();>" + sdate + "</a></td>"; break; case "Wednesday": table_td += "<td><a onmouseover=selStation(1); onmouseout=chide();>" + sdate + "</a></td>"; break; case "Thursday": table_td += "<td><a onmouseover=selStation(1); onmouseout=chide();>" + sdate + "</a></td>"; break; case "Friday": table_td += "<td><a onmouseover=selStation(1); onmouseout=chide();>" + sdate + "</a></td>"; break; case "Saturday": table_td += "<td><a onmouseover=selStation(1); onmouseout=chide();>" + sdate + "</a></td>"; break; case "Sunday": table_td += "<td><a onmouseover=selStation(1); onmouseout=chide();>" + sdate + "</a></td></tr>"; break; } } //结束 table_td += "</tr></table>"; 打印table_td即可。 以上是我自己写的,但觉得不怎么样,下面我提供下别人在我做完后,做给我的,代码如下: 复制代码 代码如下: int weekIndex(string item) { string[] week = new string[] { "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday" }; int index = -1; for (int i = 0; i < week.Length; i++) { if (week[i].Trim().ToUpper() == item.ToUpper().Trim()) { index = i; break; } } return index; } 复制代码 代码如下: StringBuilder sb = new StringBuilder(); sb.Remove(0, sb.Length); sb.Append("<table><tr><td>星期一</td><td>星期二</td><td>星期三</td><td>星期四</td><td>星期五</td><td>星期六</td><td>星期天</td></tr>"); DateTime dt1 = new DateTime(2010, 3, 16); DateTime dt2 = new DateTime(2010, 4, 13); TimeSpan ts = dt2 - dt1; int index; DateTime dtTemp; for (int i = 0; i < ts.Days; i++) { dtTemp=dt1.AddDays(i); index = weekIndex(dtTemp.DayOfWeek.ToString()); if (index == 0 && i > 0) { sb.AppendFormat("<tr><td>{0}</td>", dtTemp.ToString("MM-dd")); } else if (index > 0 && i == 0) { sb.Append("<tr>"); for (int j = 0; j <= index - 1; j++) { sb.Append("<td> </td>"); } sb.AppendFormat("<td>{0}</td>", dtTemp.ToString("MM-dd")); } else if (index == 6 && i>0) { sb.AppendFormat("<td>{0}</td></tr>", dtTemp.ToString("MM-dd")); } else { sb.AppendFormat("<td>{0}</td>", dtTemp.ToString("MM-dd")); } } sb.Append("</table>"); Response.Write(sb.ToString()); 看完后,大致上的想法是一样的,只是.......初学者没办法。继续努力。 |
|