从特定时间段获取数据

时间:2012-06-18 22:03:12

标签: c# asp.net database datetime

我有一个aspx文档,它以HTML表格的形式从数据库返回传入的航班列表。它显示当天的所有航班。生成行的部分是:

    string fechha = dias + "/" + mess + "/" + años;
    string fecVuel = fechha;

    for (int i = 0; i <= num - 1; i++)
    {
        string hora = xl.ChildNodes[0].ChildNodes[i].ChildNodes[5].InnerText;
        fecVuel = xl.ChildNodes[0].ChildNodes[i].ChildNodes[0].InnerText;
        if (fecVuel == fechha)
        {
            fila = new TableRow();

我想要的是让它只能获得符合特定时间段的航班,比如当前时间前后2小时。在代码中,string hora的值是从db中检索的飞行时间。

我尝试使用rightnow = DateTime.Now.Hour;添加当前时间变量并添加条件,如下所示:

if (fecVuel == fecha && ((hora >= rightnow - 2) || (hora <= rightnow + 2))) {...

但它仍在生成整个表格。我甚至尝试将其更改为fecVuel != fecha,但它没有任何改变:我对asp不太好,而且我正在使用Notepad ++进行编辑。有任何想法吗?谢谢你的时间。

2 个答案:

答案 0 :(得分:0)

现在我们说,现在是14:00

两小时前是12:00。两个小时后,它将是16:00。

现在(14:00)将始终满足以下两个条件之一:

大于12:00或小于16:00。

如果将OR更改为AND,则必须满足两个条件。

if (fecVuel == fecha && ((hora >= rightnow - 2) && (hora <= rightnow + 2)))

如果您使用AND,则仅选择14:00到16:00之间的时间(不包括那些时间)。

答案 1 :(得分:0)

表格中的所有内容都与您的陈述相符,因为这说明了: if (fecVuel == fecha && (( rightnow - 2 <= hora ) || (hora <= rightnow + 2))) {...

它表示任何(rightnow - 2 <= hora) OR (hora <= rightnow + 2) ---并且一切都将等于其中一个或另一个条款,无论是在目标时间之前18小时还是在目标时间之后99小时。

您需要的是:((rightnow - 2) <= hora) && (hora <= (rightnow + 2))

所以,将||更改为&&,您应该得到您所追求的结果。