Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.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#或Vb.net中检查这两个日期是否介于另外两个日期之间_C#_.net_Vb.net - Fatal编程技术网

如何在c#或Vb.net中检查这两个日期是否介于另外两个日期之间

如何在c#或Vb.net中检查这两个日期是否介于另外两个日期之间,c#,.net,vb.net,C#,.net,Vb.net,我有一个搜索页面,可以按日期搜索文章。搜索条件仅包含月份和年份。 因此,无论何时选择月份并单击“筛选” 我把那个月的开始日期定为“dtStartDate” 月底日期为“dtEndDate” 必须搜索的文章也有 生效开始日期为“生效开始日期” 且生效结束日期为“生效日期” 那么,如果“EffStartDate”和“EffEndDate”都在内部,那么情况应该是什么呢 “dtStartDate”和“dtEndDate” 我试过了,但结果不正确 If (EffStartDate >= dtSta

我有一个搜索页面,可以按日期搜索文章。搜索条件仅包含月份和年份。 因此,无论何时选择月份并单击“筛选” 我把那个月的开始日期定为“dtStartDate” 月底日期为“dtEndDate”

必须搜索的文章也有 生效开始日期为“生效开始日期” 且生效结束日期为“生效日期”

那么,如果“EffStartDate”和“EffEndDate”都在内部,那么情况应该是什么呢 “dtStartDate”和“dtEndDate”

我试过了,但结果不正确

If (EffStartDate >= dtStartDate & EffStartDate  <= dtEndDate) 

    //Do Something     

ElseIf (EffEndDate >= ddl_FromDate & EffEndDate <= dtEndDate.AddDays(1)) Then

    //Do Something

End If
现在,在我的搜索页面中,当我在2012年7月1日至2012年7月31日之间搜索文章时 我应该看到这两篇文章,因为effstardate和effenddate都在某个地方 介于用于搜索的日期之间。
但现在我只看到Artilce-1作为结果。为什么?

我不太明白你的问题,但像这样更简单

 bool isStartEffDateInside=(EffStartDate >= dtStartDate && EffStartDate  <= dtEndDate);
 bool isEndEffDateInside=(EffEndDate >= ddl_FromDate && EffEndDate <= dtEndDate.AddDays(1));

if(isStartEffDateInside || isEndEffDateInside)
{
 // do something global
  if(isStartEffDateInside && isEndEffDateInside)
    {
        //Do something when the two Effs are inside the StartEnd
    }
}

bool isStartEffDateInside=(EffStartDate>=dtStartDate&&EffStartDate=ddl_FromDate&&EffEndDate您尝试过这种方法吗?

从您的示例中我很清楚,您的标准文本是错误的。您的标准文本声明,如果有效开始日期和结束日期都在日期范围内,您只想显示一篇文章……如果re文章的有效范围完全符合搜索范围。但您的示例表明,如果日期范围的任何部分符合搜索范围,则您希望显示文章。进行编辑以澄清这一点会有所帮助,但现在我将继续前进,假设示例是正确的解释

您似乎还将VB.Net和C#中的语言语法混合在一起。您不能这样混合语法。您的代码片段中影响最大的似乎是VB.Net,因此我将在我的示例中使用它

在VB.Net中,您可以编写与搜索示例匹配的条件,如下所示:

If(EffStartDate>=dtStartDate,也就是EffStartDate=dtStartDate,生效日期=dtStartDate),然后
'...
如果结束
我还担心您在
If
块中编写此代码。如果这些日期在数据库中,那么数据库是迄今为止过滤结果的最佳位置。如果数据在其他地方,那么某种类型的linq to objects查询可能会产生更好的性能,并且更短,更易于维护。

C\ve重复性:


if((EffStartDate>=dtStartDate&&EffStartDate=dtStartDate&&EffEndDate 1)如果您可以在数据库“select”中使用“between”子句,则执行该操作。2)否则,如果您必须在C代码中执行该操作(与SQL“select”相比),然后使用。您能详细说明为什么结果不正确吗?您得到的结果和期望的结果是什么?您是否使用linq to entities?@gideon请检查更新后的问题和场景。感谢在这两种情况下,您的有效结束日期都超出了搜索范围。根据您的条件文本,您希望排除这两种情况icles,不显示任何内容。你确定你的意思是开始日期或结束日期不在日期范围内吗?另外,我担心你是在If块中编写的。这应该是数据库查询的一部分,或者通过linq完成。这两种方法都会产生更好的性能,并且更好地进行代码维护。即使使用ur日志ic,结果不是预期的。请检查我现在添加的场景。感谢上面的场景…您的逻辑工作正常。它会将两篇文章作为结果显示给我。但是当我在2012年8月1日到2012年8月31日之间搜索这篇文章时,它也会将两篇文章作为结果显示给我!!!但现在不是了…它只显示了第1篇文章
 bool isStartEffDateInside=(EffStartDate >= dtStartDate && EffStartDate  <= dtEndDate);
 bool isEndEffDateInside=(EffEndDate >= ddl_FromDate && EffEndDate <= dtEndDate.AddDays(1));

if(isStartEffDateInside || isEndEffDateInside)
{
 // do something global
  if(isStartEffDateInside && isEndEffDateInside)
    {
        //Do something when the two Effs are inside the StartEnd
    }
}
if ((EffStartDate >= dtStartDate && EffStartDate <= dtEndDate) ||
    (EffEndDate >=  dtStartDate && EffEndDate <= dtEndDate))
{
    // Good Article
}
else
{
    // Bad Article
}