日期:2014-05-17  浏览次数:20427 次

关于时间控件的一个判断问题
DatePicker.ascx

前台
<asp:TextBox runat="server" ID="txtDateTime" />
<asp:ImageButton runat="Server" ID="btnCalendar" ImageUrl="~/images/Calendar_scheduleHS.png" AlternateText="" />
<br />
<ajaxToolkit:CalendarExtender runat="server" ID="ajaxCalendar" TargetControlID="txtDateTime" PopupButtonID="btnCalendar" /> 
后台
 public DateTime? SelectedDate
        {
            get
            {
                DateTime inputDate;
                if (!DateTime.TryParse(txtDateTime.Text, out inputDate))
                {
                    return null;
                }
                return inputDate;

            }
            set
            {
                ajaxCalendar.SelectedDate = value;
            }
        }

界面引用了2次这个控件:开始时间 与结束时间
 DateTime? startDate = ctrlStartDatePicker.SelectedDate;
 DateTime? endDate = ctrlEndDatePicker.SelectedDate;
当我在text里面手动输入时间


startDate 可以取到值
endDate一直为null
调试发现endDate的时候 txt值能取到,就是转型失败 直接return null,
如果我直接改成
if(txtDateTime.Text!=null)
{
  return  Convert.ToDateTime(txtDateTime.Text);
}
就报错 日历 System.Globalization.GregorianCalendar 中不支持该字符串所表示的 DateTime。
请问下 该如何改

------解决方案--------------------
引用:
Quote: 引用:

Quote: 引用:

为啥不是  2013/6/08 00:00  而是 2013/6/08 24:00  

因为我有2个控件
0:00是开始时间  可以读取 没有问题
24:00 是结束时间  手动输入 读取有问题 转型失败


当然 我这个测试是没改代码之前的问题
改代码是直接报错 我还没看具体转型什么问题

 24:00 这个转时间肯定会出错的
手动输入的话,应该先用js检测一下输入的时间是否合法,不合法的话要提示让他重新输入