检查时间是否在时间范围之间,以及用户是否仅给出开始或结束时间

时间:2018-04-19 17:12:56

标签: javascript

我让用户选择开始和结束时间,并尝试制作一个if语句,过滤掉所有不在其时间范围内的数据。

    var startT = start date set by user
    var endT   = end date set by user
    var dbTime = some datetime in database

我知道如下所示的if语句将在指定日期之间进行检查(假设用户同时设置了开始和结束时间):

    if (dbTime > startT && dbTime < endT ){
     //do something
    }

我在如何检查所有条件情景而不会将其作为巨大的if语句时进行消隐。因此,如果用户只想在某个特定日期之前查看所有内容,只指定结束时间而不是开始时间,那么它仍然有用。

2 个答案:

答案 0 :(得分:1)

if ((!startT || dbTime >= startT) && (!endT || dbTime <= endT))

这应该可以解决问题。基本上,对于每个条件,您要么根据该值进行过滤,要么如果没有该值则让它通过。

例如,如果我只提供endT 2010-01-01,则所有时间小于或等于该值的记录都可以使用。无所谓也就是少了。

答案 1 :(得分:1)

所以听起来你需要处理三个顶级案例:

1. User defines start date and end date
2. User only defines end date
3. User only defines start date

如果您的用户未指定日期,我将假设您的变量为undefinednull。在这种情况下,有三个顶级if条件来处理您的查询。以下内容应该有效:

if (startT && endT) {
 // handle all timestamps in between the range
   if (dbTime > startT && dbTime < endT ){
     //do something
   }
} else if (!startT && endT && dbTime < endT) {
 //handle everything before end timestamp
} else if (startT && dbTime > startT) {
 // handle everything after start timestamp
}