总结:
1,这里主要用到string转换成Datetime,及Datetime转换string且selectvalue给DroDownList
2,用int[]数组保存好12个月的天数,及润年判断
前台是三个DropDownList:DDL_Year,DDL_Month,DDL_Day
private bool isEnable = true;
public bool IsEnable
{
get { return isEnable; }
set { isEnable = value; }
}
private bool isDayVisiber=true;
public bool IsDayVisiber
{
get { return isDayVisiber; }
set { isDayVisiber = value; }
}
private bool isMonthVisiber = true;
public bool IsMonthVisiber
{
get { return isMonthVisiber; }
set { isMonthVisiber = value; }
}
private bool isYearVisiber = true;
public bool IsYearVisiber
{
get { return isYearVisiber; }
set { isYearVisiber = value; }
}
public string Year
{
get
{
return DDL_Year.SelectedItem.Value.ToString();
}
set
{
if (value is string)
{
DDL_Year.SelectedValue = value;
DDL_Month_SelectedIndexChanged(null, null);
}
}
}
public string Month
{
get
{
int M = Convert.ToInt32(DDL_Month.SelectedItem.Value.ToString());
return M.ToString("00");
}
set
{
if (value is string)
{
DDL_Month.SelectedValue = value;
DDL_Month_SelectedIndexChanged(null, null);
}
}
}
public string Day
{
get
{
int D = Convert.ToInt32(DDL_Day.SelectedItem.Value.ToString());
return D.ToString("00");
}
set
{
if (value is string)
DDL_Day.SelectedValue = value;
}
}
private string datetime;
public string Datetime
{
get
{
int Y = Convert.ToInt32(DDL_Year.SelectedItem.Value.ToString()),
M = Convert.ToInt32(DDL_Month.SelectedItem.Value.ToString()),
D = Convert.ToInt32(DDL_Day.SelectedItem.Value.ToString());
return Y.ToString("0000") + M.ToString("00") + D.ToString("00");
}
set
{
if (value is string)
{
datetime = value;
try
{
int y = Convert.ToInt32(value.Substring(0, 4)),
M = Convert.ToInt32(value.Substring(4, 2)),
D = Convert.ToInt32(value.Substring(6, 2));
DDL_Year.SelectedValue = y.ToString();
DDL_Month.SelectedValue = M.ToString();
DDL_Month_SelectedIndexChanged(null, null);
DDL_Day.SelectedValue = D.ToString();
}
catch
{
int nowyear = Convert.ToInt32(DateTime.Now.Year.ToString()), nowmonth = Convert.ToInt32(DateTime.Now.Month.ToString()), nowday = Convert.ToInt32(DateTime.Now.Day.ToString());
yearStar(nowyear);
monthStar();
dateStar(nowmonth, nowyear);
DDL_Year.SelectedValue = nowyear.ToString();
DDL_Month.SelectedValue = nowmonth.ToString();
DDL_Day.SelectedValue = nowday.ToString();
}
}
}
}
public string DatetimeTwor
{
get
{
int Y = Convert.ToInt32(DDL_Year.SelectedItem.Value.ToString()),
M = Convert.ToInt32(DDL_Month.SelectedItem.Value.ToString());
return Y.ToString("0000") + M.ToString("00") ;
}
set
{
if (value is string)
{
try
{
int y = Convert.ToInt32(value.Substring(0, 4)),
M = Convert.ToInt32(value.Substring(4, 2));
DDL_Year.SelectedValue = y.ToString();
DDL_Month.SelectedValue = M.ToString();
DDL_Month_SelectedIndexChanged(null, null);
}
catch
{
Page.ClientScript.RegisterStartupScript(this.GetType(), "message", "<script>alert('Date format error! eg:20120308');</script>");
}
}
}
}
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
int nowyear = Convert.ToInt32(DateTime.Now.Year.ToString()), nowmonth = Convert.ToInt32(DateTime.Now.Month.ToString()), nowday = Convert.ToInt32(DateTime.Now.Day.ToString());
yearStar(nowyear);
monthStar();
dateStar(nowmonth, nowyear);
DDL_Year.SelectedValue = nowyear.ToString();
DDL_Month.SelectedValue = nowmonth.ToString();
DDL_Day.SelectedValue = nowday.ToString();
Datetime = datetime;
}
DDL_Day.Visible = IsDayVisiber;
DDL_Month.Visible = IsMonthVisiber;
DDL_Year.Visible = IsYearVisiber;
DDL_Day.Enabled = IsEnable;
DDL_Month.Enabled = IsEnable;
DDL_Year.Enabled = IsEnable;
}
protected void DDL_Year_SelectedIndexChanged(object sender, EventArgs e)
{
this.DDL_Day.Items.Clear();
//DDL_Day.Items.Insert(0, new ListItem("-Select Day-", "0"));
//DDL_Month.SelectedValue = "1";
Month = "1";
}
protected void DDL_Month_SelectedIndexChanged(object sender, EventArgs e)
{
this.DDL_Day.Items.Clear();
int selectyear = Convert.ToInt32(DDL_Year.SelectedItem.Value.ToString()),
selectmonth = Convert.ToInt32(DDL_Month.SelectedItem.Value.ToString());
//DDL_Day.Items.Insert(0, new ListItem("-Select Day-", "0"));
if (selectmonth != 0 && selectyear != 0)
dateStar(selectmonth, selectyear);
}
protected void DDL_Day_SelectedIndexChanged(object sender, EventArgs e)
{
}
private void yearStar(int nowyear)
{
int j = 0;
for (int i = nowyear - 9; i <= nowyear + 9; i++)
{
j++;
DDL_Year.Items.Insert(j-1, new ListItem(i + "", i.ToString()));
}
}
private void monthStar()
{
for (int i = 1; i <= 12; i++)
{
DDL_Month.Items.Insert(i-1, new ListItem(i + "", i.ToString()));
}
}
private void dateStar(int monthid, int selectyear)
{
int[] maxDay = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
int day = maxDay[monthid - 1];
if ((0 == selectyear % 4 && (selectyear % 100 != 0 || selectyear % 400 == 0)) && monthid == 2)
{
day++;
}
for (int i = 1; i <= day; i++)
{
DDL_Day.Items.Insert(i-1, new ListItem(i + "", i.ToString()));
}
DDL_Day.SelectedValue = "1";
}