积极答复者
三个DropDownList分别代表年月日

问题
-
三个DropDownList分别代表年月日,再给日期设定的时候,要先判断平年还是闰年,然后再根据月份设定时间,请问下我应该怎么写???
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title></title> </head> <body> <form id="form1" runat="server"> <div> 到达时间:<asp:DropDownList ID="ddl_GoYear" runat="server" AutoPostBack="True"> </asp:DropDownList> <asp:DropDownList ID="ddl_GoMonth" runat="server" AutoPostBack="True" OnSelectedIndexChanged="ddl_GoMonth_SelectedIndexChanged"> </asp:DropDownList> <asp:DropDownList ID="ddl_GoDay" runat="server"> </asp:DropDownList> <br /> 离开时间:<asp:DropDownList ID="ddl_LeaveYear" runat="server" AutoPostBack="True"> </asp:DropDownList> <asp:DropDownList ID="ddl_LeaveMonth" runat="server" AutoPostBack="True" OnSelectedIndexChanged="ddl_LeaveMonth_SelectedIndexChanged"> </asp:DropDownList> <asp:DropDownList ID="ddl_LeaveDay" runat="server"> </asp:DropDownList> <br /> <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label> </div> </form> </body> </html>
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { //添加年份 for (int i = 2004; i <= 2014; i++) { ddl_GoYear.Items.Add(i.ToString()); ddl_LeaveYear.Items.Add(i.ToString()); } //添加月份 for (int i = 1; i <= 12; i++) { ddl_GoMonth.Items.Add(i.ToString()); ddl_LeaveMonth.Items.Add(i.ToString()); } } } protected void ddl_GoMonth_SelectedIndexChanged(object sender, EventArgs e) { //到达时间 //判断平年闰年 if (Convert.ToInt32(ddl_GoMonth.SelectedItem.Text) == 2) //获得当前月份 { if (DateTime.IsLeapYear(Convert.ToInt32(ddl_GoYear.SelectedItem.Text)) == true) //TRUE为闰年,FALSE为平年 { for (int i = 1; i <= 29; i++) { ddl_GoDay.Items.Add(i.ToString()); } } else if (DateTime.IsLeapYear(Convert.ToInt32(ddl_GoYear.SelectedItem.Text)) == false) { for (int i = 1; i <= 28; i++) { ddl_GoDay.Items.Add(i.ToString()); } } } //添加日期(31天) if (Convert.ToInt16(ddl_GoMonth.SelectedItem.Text) == 1 || Convert.ToInt16(ddl_GoMonth.SelectedItem.Text) == 3 || Convert.ToInt16(ddl_GoMonth.SelectedItem.Text) == 5 || Convert.ToInt16(ddl_GoMonth.SelectedItem.Text) == 7 || Convert.ToInt16(ddl_GoMonth.SelectedItem.Text) == 8 || Convert.ToInt16(ddl_GoMonth.SelectedItem.Text) == 10 || Convert.ToInt16(ddl_GoMonth.SelectedItem.Text) == 12) { for (int i = 1; i <= 31; i++) { ddl_GoDay.Items.Add(i.ToString()); } } //添加日期(30天) if (Convert.ToInt16(ddl_GoMonth.SelectedItem.Text) == 4 || Convert.ToInt16(ddl_GoMonth.SelectedItem.Text) == 6 || Convert.ToInt16(ddl_GoMonth.SelectedItem.Text) == 9 || Convert.ToInt16(ddl_GoMonth.SelectedItem.Text) == 11) { for (int i = 1; i <= 30; i++) { ddl_GoDay.Items.Add(i.ToString()); } } } protected void ddl_LeaveMonth_SelectedIndexChanged(object sender, EventArgs e) { //离开时间 //添加日期(31天) if (Convert.ToInt16(ddl_LeaveMonth.SelectedItem.Text) == 1 || Convert.ToInt16(ddl_LeaveMonth.SelectedItem.Text) == 3 || Convert.ToInt16(ddl_LeaveMonth.SelectedItem.Text) == 5 || Convert.ToInt16(ddl_LeaveMonth.SelectedItem.Text) == 7 || Convert.ToInt16(ddl_LeaveMonth.SelectedItem.Text) == 8 || Convert.ToInt16(ddl_LeaveMonth.SelectedItem.Text) == 10 || Convert.ToInt16(ddl_LeaveMonth.SelectedItem.Text) == 12) { for (int i = 1; i <= 31; i++) { ddl_LeaveDay.Items.Add(i.ToString()); } } //添加日期(30天) if (Convert.ToInt16(ddl_LeaveMonth.SelectedItem.Text) == 4 || Convert.ToInt16(ddl_LeaveMonth.SelectedItem.Text) == 6 || Convert.ToInt16(ddl_LeaveMonth.SelectedItem.Text) == 9 || Convert.ToInt16(ddl_LeaveMonth.SelectedItem.Text) == 11) { for (int i = 1; i <= 30; i++) { ddl_LeaveDay.Items.Add(i.ToString()); } } } }
我这样写为什么二月份总是29天?
请各位大神指教。
小弟头次发帖,有什么不合适的地方各位多多指正。。。
- 已移动 ThankfulHeart 2014年8月19日 4:49
答案
-
推荐使用日期控件,你这样写一是开发时间长,二是bug多。
如果必须要这么写,可以用.NET的现有方法获取某个月有多少天。比如获取当前月的天数,可以用DateTime.DaysInMonth(DateTime.Today.Month)
- 已编辑 Wilson Tian 2014年8月19日 3:24 format
- 已建议为答案 ThankfulHeart 2014年8月19日 4:49
- 已标记为答案 qunge 2014年8月20日 7:52
全部回复
-
推荐使用日期控件,你这样写一是开发时间长,二是bug多。
如果必须要这么写,可以用.NET的现有方法获取某个月有多少天。比如获取当前月的天数,可以用DateTime.DaysInMonth(DateTime.Today.Month)
- 已编辑 Wilson Tian 2014年8月19日 3:24 format
- 已建议为答案 ThankfulHeart 2014年8月19日 4:49
- 已标记为答案 qunge 2014年8月20日 7:52