0

我有一个 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是从数据库中检索到的飞行时间。

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

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

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

4

2 回答 2

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(不包括这些时间)之间的时间。

于 2012-06-18T22:09:10.243 回答
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))

所以,将你的更改||&&,你应该得到你想要的结果。

于 2012-06-18T22:18:05.360 回答