Как я могу проверить дату не будущую дату в .net c # - PullRequest
4 голосов
/ 26 мая 2011

Просто бродить, как я могу проверить дату не будущую дату в .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);
   }

Ответы [ 3 ]

23 голосов
/ 26 мая 2011

DateTime реализует интерфейс IComparer.Проверьте, превышает ли он значение DateTime.Now

Нет причин для его анализа, просто выполните:

if(datetime1>datetime2)
{
    ....
}
3 голосов
/ 26 мая 2011

Я думаю, что вы получаете сообщение об ошибке: DateTime.Parse("1000/12/28") Вместо этого попробуйте DateTime.MinValue.Вы также можете по желанию использовать CompareValidators ..

Кроме того, по любой причине вы не просто делаете [ваша дата]

1 голос
/ 10 сентября 2013

Вот мой код, который выполняет проверку значения даты, которое не должно быть в будущем на стороне клиента :

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; 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...