出生日期验证

时间:2010-09-04 09:12:23

标签: asp.net

我在asp.net工作,我想在一个文本框中从用户那里获取DOB,我如何验证测试盒的feb和闰年考虑。我也希望日期输入DD / MM / YYYY

6 个答案:

答案 0 :(得分:2)

试试这个 -

// <summary>
// Determine if Date String is an actual date
// Date format = MM/DD/YYYY
// </summary>
// <param name="date"></param>
// <returns></returns>
private bool ValidateDate(string date)
{
    try
    {
        // for US, alter to suit if splitting on hyphen, comma, etc.
        string[] dateParts = date.Split('/');

        // create new date from the parts; if this does not fail
        // the method will return true and the date is valid
        DateTime testDate = new 
            DateTime(Convert.ToInt32(dateParts[2]), 
            Convert.ToInt32(dateParts[0]), 
            Convert.ToInt32(dateParts[1]));

         return true;
    }
    catch
    {
        // if a test date cannot be created, the
        // method will return false
        return false;
    }
}

答案 1 :(得分:2)

这些验证码也有效。

<asp:CompareValidator ErrorMessage="(mm/dd/yyyy)" Display="Dynamic" ID="valcDate" ControlToValidate="txtDate" Operator="DataTypeCheck" Type="Date" runat="server"></asp:CompareValidator>           

<asp:RangeValidator ID="valrDate" runat="server" ControlToValidate="txtDate" MinimumValue="12/31/1950" MaximumValue="1/1/2100" Type="Date" text="Invalid Date" Display="Dynamic"/>

答案 2 :(得分:1)

尝试在ASP.NET中使用正则表达式验证器。这样的事情:

<asp:RegularExpressionValidator ID="RegExpVal1" runat="server" ControlToValidate="{Here Goes your Text Box}" ErrorMessage="DOB has to be in dd/mm/yyyy format" ValidationExpression="^([1-9]0[1-9][12][0-9]3[01])[- /.]([1-9]0[1-9]1[012])[- /.][0-9]{4}$" >*</asp:RegularExpressionValidator>
编辑:我错过了你的问题(tnx到@rob)。所以也许你可以使用自定义验证器。像这样:

<asp:CustomValidator ID="MyValidator" runat="server" 
    ErrorMessage="Invalid date!"
    ControlToValidate="tbDOB" 
    OnServerValidate="MyValidator_ServerValidate">
</asp:CustomValidator>

将上面添加到DateTime用户控件。现在检查有效日期:

    public partial class DateTime_EditField : System.Web.DynamicData.FieldTemplateUserControl
    {
    protected void Page_Load(object sender, EventArgs e)
    {

    }

    protected void MyValidator_ServerValidate(object source, ServerValidateEventArgs args)
    {
        DateTime temp;
        String textDate = tbDOB.Text;

        if (DateTime.TryParse(textDate, out temp))
        {
            args.IsValid = true;
        }
        else
        {
            args.IsValid = false;
        }
    }
}

答案 3 :(得分:1)

您可以使用DateTime.TryParseExact

string dateString = "22/07/1876";
DateTime dateOut;
if ((DateTime.TryParseExact(dateString, "dd/MM/yyyy",
                  new CultureInfo("en-US"),
                  DateTimeStyles.None,
                  out dateOut)))
    Console.WriteLine("Date is valid: {0}", dateOut.ToString());
else
    Console.WriteLine("Date string {0} is invalid.", dateString);

答案 4 :(得分:1)

最好的办法是使用DateTime.ParseDate方法:

var date = "01/10/1981";

var parsedDate = new DateTime();
if (DateTime.TryParse(date, out parsedDate))
{
    // Date is valid and is now in "date"
}
else
{
    // Date is NOT valid / parseable
}

答案 5 :(得分:1)

我不明白为什么你们所有人都试图重新发明轮子,使用正则表达式来验证你想要日期的格式 http://regexlib.com/Search.aspx?k=date&c=-1&m=5&ps=50 有很多伟大的正则表达式,需要闰年等等。