2017-01-15 32 views
-1

私はNode.jsにアプリケーションをビルドしています。私はJavascriptでnoobです。JSで2回の間に時間があるかどうかを調べる

私はアプリケーションの検証をビルドしようとしていますが、イベントを挿入するmysqlデータベーステーブルを作成しましたが、これらのイベントは同時に実行できません。私のテーブルザッツ

replay_id 
replay_hour_begin (varchar) (00:00:00) 
replat_hour_end (varchar) (00:00:00) 

挿入時間はパラメータを介して受信され、かつ同時に発生するデータベース上の任意のイベントがある場合、私はチェックしています。

そしてそれは、私は、ユーザー入力を検証するために構築された機能です:

function checkEvent(hour, callback){ 

    connection.query('Select * from replay', function(err, rows, fields) { 
    if (err) callback(err, null) 
    else 

     var startTime = rows[0].replay_hour_begin; 
     var endTime = rows[0].replay_hour_end; 
     var insertedTime = hour; 

     var getStartTime = new Date(); 
     var getEndTime = new Date(); 
     var getInsertedTime = new Date(); 

     getStartTime.setHours(startTime.split(":")[0]); 
     getStartTime.setMinutes(startTime.split(":")[1]); 

     getEndTime.setHours(endTime.split(":")[0]); 
     getEndTime.setMinutes(endTime.split(":")[1]); 

     getInsertedTime.setHours(insertedTime.split(":")[0]); 
     getInsertedTime.setMinutes(insertedTime.split(":")[1]); 

     console.log(getStartTime.getTime()); 
     console.log(getEndTime.getTime()); 
     console.log(getInsertedTime.getTime()); 

     var valid = getStartTime.getTime() < getInsertedTime.getTime() && getEndTime.getTime() > getInsertedTime.getTime(); 

     console.log(valid); 

     //callback(null,true); 


    }); 
} 

挿入時間が占有されている場合は、変数のチェックがチェックされます。

しかし、有効な値を送信しても、私は常に「偽」を受け取ります。

私は間違っていますか?

ありがとうございます。

答えて

2

余分なライブラリを気にしない場合はisBetweenメソッドを使用してmoment.jsを試してみてください。

moment('2010-10-20').isBetween('2010-10-19', '2010-10-25'); 

これで、データベースがあり、全データベースを照会してチェックしていると、これは非効率的です。データベースはあなたに最適なクエリとチェックを行います。例えば、ここではMySQLがあなたのためにそれを扱わせるべきです:

SELECT * FROM `replay` WHERE (date_field BETWEEN '2016-01-30 14:15:55' AND '2016-09-29 10:15:55') 

データベース全体をロードしてアプリケーションでチェックしないでください。

ここでは、ある日付が他の2つの日付の間にあるかどうかを確認するために、単に日付を比較することができます。

var a = new Date(SOME_DATE) 
var b = new Date(OTHER_DATE) 
var c = new Date(DATE_TO_CHECK) 

var isBetween = c>=a && c<=b || c>=b && c<=a 
関連する問題