Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如果日期分为多个字段,如何使用日期比较验证器?_C#_Asp.net_Comparevalidator - Fatal编程技术网

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

C# 如果日期分为多个字段,如何使用日期比较验证器?,c#,asp.net,comparevalidator,C#,Asp.net,Comparevalidator,我正在用C完成一个表单,我想验证数据输入。我看过很多关于使用CompareValidator进行验证的帖子。这很清楚 我只想问一个问题:我在一个字段中有日期,这是使用AjaxControlToolkit日历扩展程序的结果。您可以通过以下方式检索它: DateField.Text; 然后,我在表单的另一个字段中有小时,使用来自NuGet的MKB Time Select包 TimeSelector1.Hour + ":" + TimeSelector1.Minute 是我要使用的值 因此,用户一

我正在用C完成一个表单,我想验证数据输入。我看过很多关于使用CompareValidator进行验证的帖子。这很清楚

我只想问一个问题:我在一个字段中有日期,这是使用AjaxControlToolkit日历扩展程序的结果。您可以通过以下方式检索它:

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.AddHours24进行比较

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

我不太清楚你在这里想做什么。你能不能把你的DateField.Text和你的TimeSelector值解析成一个DateTime对象,然后进行比较?我没想到!那对我来说可能有用。尽管如此,我仍然不确定创建数据对象的最佳方法是使用返回日期(如dd/mm/YYYY)的字段,然后使用仅返回HH和mm的其他两个时间值。我找到的所有信息都是关于VB的…谢谢,就是这样。我必须添加它,而不是比较验证器,我决定将此函数与自定义验证器一起使用。我发现在某种程度上更容易。