2017-10-20 14 views
0

特定の時間が別の2つの間にあるかどうかを確認する必要があります。スケジュールを確認する方法

今日:例えば木(複数で、そのrecorrent)11:39 PM

ストアX 00:00 AMから木曜日午後11時59分に開放されています。したがって、関数isOpenはtrueを返します。

私はデータベース(Firebase)でこれを書いて、このための回避策を作っています

場合はオープンとクローズは、私がチェック機能では1970年1月1日

からのミリ秒である

{ 
    "open" : 7200000, 
    "day" : "Thursday", 
    "close" : 93540000 
} 

現在の日付と一致する日がデータベースにあります。この後、1970年1月1日午後11時39分にDateを作成し、openが小さいかどうか、closeが現在の時刻よりも大きいかどうかを確認する必要があります。

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; 

そしてcheckHour

checkHour = function (open, close) { 
    return moment().year(1970).month(0).date(1).isBetween(moment(open), moment(close)); 
}; 

PS:私は

ひどいmoment.js、ひどいソリューションを使用しています、私は知っています。私は良い方法があると確信しています。

+0

あなたのコードの例であなたの質問を更新してください。 – Soviut

+0

また、使用しているデータベースについて説明してください。 – Soviut

+0

@ソビエト私は質問に例を挙げました。私はFirebaseを使用しています – Ace

答えて

0

データベースを手動で照会しないでください。データベースに独自の照会を行わせないでください。

使用しているデータベースは説明していませんが、ほとんどの「日時」フィールドは使用できる種類のものです。クエリに書式設定された日付文字列を渡して、openフィールドより大きく、closeフィールドよりも小さいかどうかを確認できます。

たとえば、SQLであなたのだろう。この場合{date}

SELECT * FROM stores WHERE {date} >= open and {date} <= close; 

は、クエリに渡しているフォーマットされた日付になります。

つまり、すでに店舗がある場合は、JavaScriptオブジェクトに既に含まれているデータを比較するだけです。

var store = { 
    "open" : 7200000, 
    "day" : "Thursday", 
    "close" : 93540000 
}; 

var now = Date.now(); 

if (now >= store.open && now <= store.close) { 
    // you are in range 
} 
+0

オープンとクローズが1970年からの時刻である可能性がありましたが、Date.now()はどちらよりも大きくなります。 – Ace

+0

質問を説明してくれてありがとう、私は間違っていると分かりません。データベースに直接検索をやり直すつもりです – Ace

関連する問題