繁体   English   中英

如果日期分为多个字段,如何使用比较验证器作为日期?

[英]How to use Compare Validator for dates if the date is split in several fields?

我正在用C#完成一个表格,我想验证数据输入。 我看过许多有关使用“ CompareValidator”进行验证的帖子。 很好,很清楚。

我只想问一个问题:我在一个字段中输入了日期,这是使用AjaxControlToolkit Calendar Extender的结果。 您可以将其检索为:

DateField.Text;

然后,使用NuGet的MKB Time Select软件包在表单的另一个字段中输入小时。

TimeSelector1.Hour + ":" + TimeSelector1.Minute

是我要使用的值。

因此,用户一直在填写表单,并从日期字段中选择了一个日期,并从时间选择器中选择了一个小时。 我想检查用户在这些字段中选择的日期和时间是否比当前时间至少大24小时,因此这意味着验证者需要使用这两个不同的字段来获取初始数据。

我对如何开始对此感到困惑。

基本上,验证器应在以下情况下显示警告:

DateField.Text + " " + TimeSelector1.Hour + ":" + TimeSelector1.Minute

大于

DateTime.Now.AddHours(24)

但是我不清楚如何告诉验证器验证这种语句,而不是字段中的简单内容。

使用提供的信息,您应该能够将值解析为DateTime对象。

string dateString = String.Format("{0} {1}:{2}:00", DateField.Text, TimeSelector1.Hour, TimeSelector1.Minute);
DateTime selectedDateTime = new DateTime();
if (DateTime.TryParse(dateString, out selectedDateTime))
{
    if (selectedDateTime > DateTime.Now.AddHours(24))
    {
        // code
    }
}

首先,您应该将日期和时间字符串解析为DateTime对象,然后将其与DateTime.Now.AddHours(24)进行比较。

    var inputDate = "20150606 10:12";
    DateTime date;
    if (!DateTime.TryParseExact(inputDate, "yyyyMMdd HH:mm" , CultureInfo.InvariantCulture, DateTimeStyles.None, out date))
    {
        //datetime has invalid format
    }
    else
    {
        if(date > DateTime.Now.AddHours(24))
        {
            //show warning
        }
    } 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM