我让用户选择开始和结束时间,并尝试制作一个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语句时进行消隐。因此,如果用户只想在某个特定日期之前查看所有内容,只指定结束时间而不是开始时间,那么它仍然有用。
答案 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
如果您的用户未指定日期,我将假设您的变量为undefined
或null
。在这种情况下,有三个顶级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
}