我需要验证某个时间是否在另外两个之间。例如:
今天:星期四,晚上11:39
商店X的营业时间为周四凌晨00:00至晚上11:59(复数形式,为其记录)。因此,函数isOpen返回true。
我为此做了一个解决方法,将其写在数据库(Firebase)上:
// for all elements
#(IdNumber) {width: (IdNumber)%;}
开启和关闭的时间是从1970年1月1日起的毫秒数
在函数中,我检查数据库中是否有一天与当天匹配,之后我需要在1970年1月1日晚上11:39创建一个日期并检查open是否更小而close更大比当前时间。
{
"open" : 7200000,
"day" : "Thursday",
"close" : 93540000
}
并查看我的
let open = false;
if (store.schedule) {
for (sch in store.schedule) {
if (store.schedule[sch].day == day) {
open = self.checkHour(store.schedule[sch].open, store.schedule[sch].close);
}
}
}
return open;
PS:我正在使用moment.js
我知道可怕的,可怕的解决方案。我确信有更好的方法。
答案 0 :(得分:0)
不要尝试手动查询数据库,让数据库自己进行查询。
您从未解释过您正在使用哪个数据库,但大部分都是您可以使用的某种“日期时间”字段。然后,您可以在查询中传递格式化的日期字符串,并检查它是否大于open
字段且小于close
字段。
例如,在SQL中你可以这样做:
SELECT * FROM stores WHERE {date} >= open and {date} <= close;
在这种情况下,{date}
将是您传递给查询的格式化日期。
也就是说,如果您已经有问题的商店,您只需比较您在javascript对象中已有的数据。
var store = {
"open" : 7200000,
"day" : "Thursday",
"close" : 93540000
};
var now = Date.now();
if (now >= store.open && now <= store.close) {
// you are in range
}