用什么函数检测 用户输入的生日日期,是否合法??? 

解决方案 »

  1.   

    try
    {
    DateTime dt=Convert.ToDateTime(TextBox1.Text);

    }
    catch(System.Exception e1)
    {
    Response.Write("输入错误");
    }
      

  2.   

    用trycatch的方法不妥,影响效率 虽然我以前也是这么做的。有没有人有好点的方法。
      

  3.   

    用 IsDate 函数 试试!!!!
      

  4.   

    http://community.csdn.net/Expert/topic/3294/3294192.xml?temp=.3494074
      

  5.   

    T_value = document.all["BirthDay"].value;
    var reg2=/^(\d{4})-(\d{1,2})-(\d{1,2})$/        //定义校验时间有效性的正则表达式。
    if(T_value.length != 0 && reg2.test(T_value)== false)
    {
      alert("数据提交失败:请检查您输入的每一个需求日期,需求日期只能输入YYYY-MM-DD形式!");
      document.all["BirthDay"].select();   //使出错的文本框中的值处于被选中状态
      return false;
    }
    if(T_value.length!=0)
    {
      var r=T_value.match(reg2)
      var d=new Date(r[1],r[2]-1,r[3])
      if(!(d.getFullYear()==r[1]&&d.getMonth()==r[2]-1&&d.getDate()==r[3])){
        alert("数据提交失败:请检查您输入的每一个需求日期,需求日期只能输入YYYY-MM-DD形式!");
        document.all["BirthDay"].select();   //使出错的文本框中的值处于被选中状态
        return false;
      }
    }
      

  6.   

    <%@ Page Language="C#"%><script runat=server>
    void Button_Click(Object sender, EventArgs e) 
    {
    Response.Redirect( "ThankYou.aspx" );
    }
    </Script><html>
    <head><title>CompareValidatorDataTypeCheck.aspx</title></head>
    <body><form Runat="Server">Enter your birth date:
    <asp:TextBox
      id="txtBirthDate"
      Columns="10"
      Runat="Server"/><asp:CompareValidator
      ControlToValidate="txtBirthDate"
      Display="Dynamic"
      Text="Invalid birth date!"
      Operator="DataTypeCheck"
      Type="Date"
      Runat="Server" /><p><asp:Button
      Text="Submit"
      OnClick="Button_Click"
      Runat="Server"/></form></body>
    </html>
      

  7.   

    纠正一下1楼的错误,Convert.ToDateTime()方法并不会抛出异常,如果无法转换会是null(或者一个初始值,忘记了)
    所以直接用Convert转换,然后判断是否是期待的值就可以了。
    不用try
      

  8.   

    v192(魔渡众生) 的方法如果可行的话,是不错的,还有可以用CompareValidator验证控件
      

  9.   

    晕 ,还没有写完就发了 
    function ChkData(str)
    {
    if (str.length==8) 
    {
    str=str.substr(0,4) + '-' + str.substr(4,2) + '-' + str.substr(6,2);
    //alert(str);
    }
    var r = str.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/); 
    if(r==null) return false; 
    var d= new Date(r[1], r[3]-1, r[4]); 
    return (d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]);
    }------------
    to:楼主
               我的这个日期,可以允许用户不填写的,所以不能用正则
    当有用户输入的值再判断就是了 为什么说不能用正则呢这个你还可以扩展一下允许用户输入 如 20041025 这样的格式
      

  10.   

    麻烦!楼上有两位兄弟已经说了,用 IsDate !它是VBScript中的函数,返回逻辑型值,判断诸如2004-2-30这样的非法日期也没问题。不信你自己测试一下:<%=IsDate("2004-2-29")%>
    <BR>
    <%=IsDate("2003-2-29")%>第一个返回 True,第二个返回 False
      

  11.   

    直接用CompareValid验证控制就可以验证日期了对于2000/2/29这样的润月都可以用。不过要考虑到其它可用性,如果出生日期不能早于1900年也不能迟于当前时间。所以,可以用Comparevalid控件与页面上一个hidden里的<1900/01/01>与<DateTime.Now>比较,三个验证件就可以实现了。