如何验证日期?

时间:2013-06-04 09:42:07

标签: c# asp.net

我有一个Texbox,用于输入日期。我使用RegularExpressionValidator作为格式dd-mm-yyyy。它工作正常。

<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" 
    ControlToValidate="tb_date" ErrorMessage="dd-mm-yyyy" 
    ValidationExpression="\d{1,2}-\d{1,2}-\d{4}">
</asp:RegularExpressionValidator>

但我还需要评估输入日期不应低于今天的日期。我该如何实现它?请帮忙......

9 个答案:

答案 0 :(得分:2)

您可以创建一个CustomValidator,将值解析为DateTime

DateTime.ParseExact(str, "dd-mm-yyyy")

或者您可以在javascript上创建验证,将值转换为日期并与现在进行比较

答案 1 :(得分:1)

您需要检查以下条件:

if(Datetime.parse(txtdate.Text)<DateTime.Now)
{
    Responce.Write("<head><script type='text/javascript'>alert('Date is greater than today's date');</script></head>");
}

答案 2 :(得分:1)

试试这个

        if (DateTime.Now.Date > givenDate.Date)
        {
            //Show error message
        }

答案 3 :(得分:1)

我会投票给总是TryParseExact

if (DateTime.TryParseExact(txtdate.Text, format, CultureInfo.InvariantCulture,     DateTimeStyles.None, out userDob))
{
    if (userDob < DateTime.Now )
    //TODO: Message will displayed
}

答案 4 :(得分:1)

你好,2 因为您使用RegularExpressionValidator来验证输入日期的一部分,所以我将通过使用验证控件向您介绍使用今天验证输入日期的解决方案 - 首先是设计师

<asp:Calendar ID="EndDate" runat="server" OnSelectionChanged="EndDate_OnSelectionChanged">
</asp:Calendar>
<asp:TextBox runat="server" ID="txtEndDate"></asp:TextBox>
<asp:CompareValidator runat="server" ID="CompareEndTodayValidator" ErrorMessage="The date must be less than today"
    ControlToValidate="txtEndDate" Type="Date" Operator="LessThan"></asp:CompareValidator>
  • 代码背后:

protected void EndDate_OnSelectionChanged(object sender,EventArgs e)         {             txtEndDate.Text = EndDate.SelectedDate.ToShortDateString();         }

  • 关于代码隐藏的页面加载

    CompareEndTodayValidator.ValueToCompare = DateTime.Now.ToShortDateString();

我希望它可以帮到你:)。

答案 5 :(得分:0)

嘿试试这个。

        string dateString = finalDate; // <-- Valid
        string format = "dd/MM/yyyy";
        DateTime dateTime;
        if (!DateTime.TryParseExact(dateString, format, CultureInfo.InvariantCulture,
            DateTimeStyles.None, out dateTime))
        {
            message = "Date is not correct format.it should be in dd/mm/yyyy";
        }

希望它可以帮助你。

答案 6 :(得分:0)

我认为你可以使用额外的Range Validator。只需将两个(正则表达式和范围)验证器用于一个控件。您可以在此处找到有关该问题的讨论:http://forums.asp.net/t/1287771.aspx

还请记住,您可以在逻辑中添加一些验证。请想象一下,例如你必须在上传之前检查该文件是否小于10MB pdf文件。所以没有强制控制,你必须在逻辑方面实现自己的验证。祝好运!

答案 7 :(得分:0)

创建Timespan的对象,只需从当前日期中减去输入日期。检查此代码:TimeSpan ts = d1.Subtract(d2); 和这个帖子:Date Difference in C#

答案 8 :(得分:0)

使用自定义验证器可能是更好的选择。你应该做到最合适。