1

我有一个为输入日期而创建的 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>

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

4

9 回答 9

2

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

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

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

于 2013-06-04T09:46:48.667 回答
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>");
}
于 2013-06-04T09:45:42.403 回答
1

尝试这个

        if (DateTime.Now.Date > givenDate.Date)
        {
            //Show error message
        }
于 2013-06-04T09:52:51.840 回答
1

我会永远投票给 TryParseExact

if (DateTime.TryParseExact(txtdate.Text, format, CultureInfo.InvariantCulture,     DateTimeStyles.None, out userDob))
{
    if (userDob < DateTime.Now )
    //TODO: Message will displayed
}
于 2013-06-04T09:58:25.207 回答
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(对象发送者,EventArgs e){ txtEndDate.Text = EndDate.SelectedDate.ToShortDateString(); }

  • 在代码隐藏的页面加载上

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

我希望它可以帮助你:)

于 2013-06-04T10:04:05.893 回答
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";
        }

希望它可以帮助你。

于 2013-06-04T09:49:25.110 回答
0

我认为您可以另外使用范围验证器。只需对一个控件使用两个(Regex 和 Range)验证器。在这里你可以找到关于这个的讨论:http ://forums.asp.net/t/1287771.aspx

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

于 2013-06-04T09:50:05.940 回答
0

创建一个对象Timespan并简单地从当前日期中减去 inout 日期。检查这段代码:TimeSpan ts = d1.Subtract(d2); 和这个线程:C#中的日期差异

于 2013-06-04T09:54:19.313 回答
0

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

于 2013-06-04T10:07:21.470 回答