【问题标题】:How can I validate the date is not the future date in .net c#如何验证日期不是 .net c# 中的未来日期
【发布时间】:2011-05-26 04:05:45
【问题描述】:

只是徘徊,我如何验证日期不是.net c#中的未来日期。

例子:

我已在此处应用验证以进行必填字段验证。但不知何故,我不知道如何应用验证来检查开始日期以确保它不是未来日期(日期不大于当前日期)?

  <tr>
        <td align="right">Start Date:</td>
        <td><asp:TextBox runat="server" ID="activeDate" size="8"/>(YYYY-MM-DD)
            <asp:RequiredFieldValidator ID="reqvactiveDate" runat="server"
                 ControlToValidate="activeDate" Display="Dynamic" EnableClientScript="true"
                 ErrorMessage="required" />

        </td>
    </tr>

我编写了以下代码来尝试日期验证。日期验证似乎对我不起作用:(

    <tr>
        <td align="right">Start Date:</td>
        <td><asp:TextBox runat="server" ID="activeDate" size="8"/>(YYYY-MM-DD)
            <asp:RequiredFieldValidator ID="reqvactiveDate" runat="server"
                 ControlToValidate="activeDate" Display="Dynamic" EnableClientScript="true"
                 ErrorMessage="required" />

            <asp:CustomValidator runat="server"
                ID="valDateRange" 
                ControlToValidate="activeDate"
                onservervalidate="valDateRange_ServerValidate" 
                ErrorMessage="enter valid date" />
        </td>
    </tr> 

后面的代码:

   protected void valDateRange_ServerValidate(object source, ServerValidateEventArgs args)
   {
       DateTime minDate = DateTime.Parse("1000/12/28");
       DateTime maxDate = DateTime.Parse("2011/05/26");
       DateTime dt;

       args.IsValid = (DateTime.TryParse(args.Value, out dt)
                       && dt <= maxDate
                       && dt >= minDate);
   }

【问题讨论】:

  • 您想要在客户端或服务器端进行验证?
  • @Muhammad Akhtar:我希望它在客户端
  • @M.R.:没有错误显示,不知何故日期检查的验证不起作用,但所需日期的验证正在工作
  • 已经发布了我的答案。我已经测试过了。

标签: c# .net asp.net datetime


【解决方案1】:

DateTime 实现了一个 IComparer 接口。检查它是否大于 DateTime.Now

没有理由解析它,只是这样做:

if(datetime1>datetime2)
{
    ....
}

【讨论】:

    【解决方案2】:

    我认为您遇到了以下错误:DateTime.Parse("1000/12/28") 相反,请尝试 DateTime.MinValue。您还可以选择使用 compareValidators..

    另外,你不只是在做 [你的日期]

    【讨论】:

      【解决方案3】:

      这是我的代码,用于在客户端上验证日期值不会在未来出现:

      ASPX 代码:

      <tr>
        <td align="right">
          Start Date:
        </td>
        <td>
          <asp:TextBox runat="server" ID="txtActiveDate" size="8"/>(YYYY-MM-DD)
          <!-- Validate if the entered date value is valid -->
          <asp:CompareValidator ID="cvIsActiveDateValid" runat="server"
           ControlToValidate="txtActiveDate"
           ErrorMessage="Invalid Start Date"
           Operator="DataTypeCheck" 
           Type="Date"></asp:CompareValidator>         
          <!-- Validate if the entered value is not future dated -->
          <asp:CompareValidator ID="cvIsActiveDateNotInFuture" runat="server" 
          ControlToValidate="txtActiveDate" 
          ErrorMessage="Start Date cannot be a future date." 
          Operator="LessThanEqual" 
          Type="Date"></asp:CompareValidator>
        </td>
      </tr>
      

      ASPX.CS 代码:

      protected void Page_Load(object sender, EventArgs e)
      {
        SetTodaysDateToCompareValidators();
        ...
      }
      
      protected void SetTodaysDateToCompareValidators()
      {
        string defaultDateFormat = "YYYY-MM-DD";
        string today = DateTime.Today.ToString(defaultDateFormat);
        cvActiveDate.ValueToCompare = today; 
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-12-11
        • 1970-01-01
        • 1970-01-01
        • 2020-01-14
        • 1970-01-01
        • 1970-01-01
        • 2018-09-27
        相关资源
        最近更新 更多