C# 如何验证日期?

C# 如何验证日期?,c#,asp.net,C#,Asp.net,我有一个用于输入日期的文本框。我使用了格式为dd-mm-yyyy的RegularExpressionValidator。它工作正常 <asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ControlToValidate="tb_date" ErrorMessage="dd-mm-yyyy" ValidationExpression="\d{1,2}-\d{1,2}

我有一个用于输入日期的文本框。我使用了格式为
dd-mm-yyyy
的RegularExpressionValidator。它工作正常

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


但我还需要评估输入的日期不应小于今天的日期。我如何实现它?请帮助……

您需要检查以下情况:

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

if(Datetime.parse(txtdate.Text)您需要检查以下条件:

if(Datetime.parse(txtdate.Text)<DateTime.Now)
{
    Responce.Write("<head><script type='text/javascript'>alert('Date is greater than today's date');</script></head>");
}
if(Datetime.parse(txtdate.Text)您可以创建将值解析为
Datetime的

DateTime.ParseExact(str, "dd-mm-yyyy")
或者,您可以在javascript上创建一个验证,将值转换为日期并与现在进行比较

您可以创建一个验证,将值解析为日期时间

DateTime.ParseExact(str, "dd-mm-yyyy")
或者,您可以在javascript上创建一个验证,该验证将值转换为日期,并与现在进行比较

        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";
        }
string dateString=finalDate;//试试这个

        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";
        }

string dateString=finalDate;//我认为您可以另外使用范围验证器。只需对一个控件使用两个(Regex和Range)验证器即可。在这里您可以找到关于此的讨论:


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

我认为您可以另外使用Range Validator.Just对一个控件使用两个(Regex和Range)验证器。在这里您可以找到关于这一点的讨论:

还请记住,您可以在logic中添加一些验证。例如,请设想您必须在上载文件之前检查该文件是否小于10MB的pdf文档。因此,没有强制控制,您必须在logic端实现自己的验证。祝您好运!

试试这个

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

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

创建一个
Timespan
对象,只需从当前日期中减去输入日期。检查此代码:
Timespan ts=d1。减去(d2);

这个线程:

创建一个
Timespan
的对象,然后简单地从当前日期减去输入日期。检查这个代码:
Timespan ts=d1。减去(d2);

还有这个帖子:

我将投票支持always TryParseExact

if (DateTime.TryParseExact(txtdate.Text, format, CultureInfo.InvariantCulture,     DateTimeStyles.None, out userDob))
{
    if (userDob < DateTime.Now )
    //TODO: Message will displayed
}
if(DateTime.TryParseExact(txtdate.Text,格式,CultureInfo.InvariantCulture,datetimestyle.None,out userDob))
{
if(userDob
我将投票支持always TryParseExact

if (DateTime.TryParseExact(txtdate.Text, format, CultureInfo.InvariantCulture,     DateTimeStyles.None, out userDob))
{
    if (userDob < DateTime.Now )
    //TODO: Message will displayed
}
if(DateTime.TryParseExact(txtdate.Text,格式,CultureInfo.InvariantCulture,datetimestyle.None,out userDob))
{
if(userDob
2您, 因为您使用RegularExpressionValidator来验证输入日期的一部分,所以我将介绍一种使用validate控件验证输入日期的解决方案 -设计师第一

<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>

  • 关于代码隐藏:
受保护的无效结束日期\u OnSelectionChanged(对象发送方,事件参数e) { txtEndDate.Text=EndDate.SelectedDate.ToSortDateString(); }

  • 代码隐藏的页面加载

    CompareEndTodayValidator.ValueToCompare=DateTime.Now.ToSortDateString()

我希望它能帮助你:)

2你, 因为您使用RegularExpressionValidator来验证输入日期的一部分,所以我将介绍一种使用validate控件验证输入日期的解决方案 -设计师第一

<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>

  • 关于代码隐藏:
受保护的无效结束日期\u OnSelectionChanged(对象发送方,事件参数e) { txtEndDate.Text=EndDate.SelectedDate.ToSortDateString(); }

  • 代码隐藏的页面加载

    CompareEndTodayValidator.ValueToCompare=DateTime.Now.ToSortDateString()


我希望它能帮助您:)

使用自定义验证器可能是更好的选择。您应该选择最合适的验证程序。

使用自定义验证程序可能是更好的选择。您应该以最佳匹配方式进行此操作。

您可以使用自定义验证程序进行此操作。您可以使用自定义验证程序进行此操作。givenDate.Date是什么?[哪个控件?]givenDate
是解析的日期,问题是,
需要评估输入的日期不应小于今天的日期
答案的方法是正确的,但唯一的困惑是,因为用户明确提到了日期的文本框。givenDate.date是什么?[哪个控件?]givenDate
是解析的日期,问题是
需要评估输入的日期不应小于今天的日期
答案的方法是正确的,但唯一的困惑是,因为用户明确提到了日期的文本框。那么我如何编写显示错误消息的代码?那么如何编写显示错误消息的代码呢?