验证控制 2 个日期之间的天数

本文关键字:之间 日期 控制 验证 | 更新日期: 2023-09-27 18:33:16

我有两个文本框,txtStartDate,txtEndDate允许用户选择格式(dd/mm/yyyy)的日期。 我需要能够创建一个验证器来检查这两个用户选择的日期之间的天数是否为 45 天或更短。 我可以使用"范围"或"比较"等验证程序控件之一,还是必须创建自定义验证程序? 任何例子都会非常有帮助。

验证控制 2 个日期之间的天数

您可以使用

CustomValidator

<asp:CustomValidator id="StartEndDiffValidator"
       ValidateEmptyText="true"
       ClientValidationFunction="StartEndValidate"
       OnServerValidate="StartEndValidate"
       Display="Dynamic"
       ErrorMessage="Timespan between start and end must be exactly 45 days"
       runat="server"/>

这个答案将引导您进入ClientValidationFunction

始终实现服务器端验证:

void StartEndValidate(object source, ServerValidateEventArgs args)
{
    DateTime startDate;
    DateTime endDate;
    bool isStartDate = DateTime.TryParse(txtStartDate.Text, out startDate);
    bool isEndDate   = DateTime.TryParse(txtEndDate.Text, out endDate);
    if(isStartDate && isEndDate)
    {
        int days = (endDate - startDate ).Days;
        args.IsValid = days == 45;
    }
    else
    {
        args.IsValid = false;
    }
}

还可以使用CompareValidators Operator属性设置为 ValidationCompareOperator.DataTypeCheck 和 Type=Date 来确保在两者中都输入了日期。

试试这个块:

Dim st As String = txtClientSerStartTime.Text
Dim et As String = txtClientSerEndTime.Text
Dim time1 As DateTime
DateTime.TryParse(st, time1)
Dim ts1 As New TimeSpan(time1.Hour, time1.Minute, time1.Second)
Dim time As DateTime
DateTime.TryParse(et, time)
Dim ts As New TimeSpan(time.Hour, time.Minute, time.Second)
Dim dur As TimeSpan = ts - ts1
Dim unit As Decimal = dur.Hours 
If unti = 45 Then
    'do something'
Else
    'do something'
End If