2016-11-16 10 views
0

あらかじめありがとうございます...私はモーメントを使用するのが初めてで、以下のコードではisBetweenのチェックが本当であるかどうかわかりません。私は、日付部分が指定された日付の間にあることを知っていますが、時間はありません。コマンドを正しく使用しているかどうかはわかりません。Moment.js日時が日付と時刻の間にあるかどうかを確認する

var beginningTime = moment('2016-11-25 3:45 am', 'YYYY-MM-DD h:mma'); 
var endTime1 = moment('2016-11-22 9:00 am', 'YYYY-MM-DD h:mma'); 
var endTime2 = moment('2016-11-30 1:00 pm', 'YYYY-MM-DD h:mma'); 
console.log("Beg Time = "+beginningTime.toString()); 
console.log("End Time1 = " +endTime1.toString()); 
console.log("End Time2 = "+endTime2.toString()); 
console.log(beginningTime.isBetween(endTime1,endTime2)); 

VM5431:4 Beg Time = Fri Nov 25 2016 03:45:00 GMT-0500 
VM5431:5 End Time1 = Tue Nov 22 2016 09:00:00 GMT-0500 
VM5431:6 End Time2 = Wed Nov 30 2016 13:00:00 GMT-0500 
VM5431:7 true 
+0

あなたのコードは結構ですと 'isBetween'はあなたに正しい答えを与え、あなたの問題は何ですか? – VincenzoC

+0

私はinBetweenが時間のためにfalseを返すべきだと思っています。 3:45 amは午前9時から午後1時までではありません – Rich

答えて

2

ドキュメントが言うように、isBetween

チェックモーメントが他の二つの瞬間、必要に応じてユニットの規模を見て(分、時間、日、など)の間にある場合。試合は(2016-11-25 3:45 am2016-11-22 9:00 am2016-11-30 1:00 pmの間にある)比較はaccoutに完全なオブジェクト(日付と時刻の情報の両方を)取るので、あなたの例のための結果が正しい

排他的です。

時間のみを比較する場合、モーメントオブジェクトは同じ日付値(曜日、月、年)を持つ必要があります。あなたの瞬間のオブジェクト(beginningTime、、)から始めて、それを達成するための1つの方法は、moment({unit: value, ...})コンストラクタを使用しています。 hourminuteのプロパティのみを設定すると、当日のモーメントオブジェクトが作成されます。

hour()およびminute()与えられた瞬間の時間と分を取得します。ここで

作業例:

var beginningTime = moment('2016-11-25 3:45 am', 'YYYY-MM-DD h:mm a'); 
 
var endTime1 = moment('2016-11-22 9:00 am', 'YYYY-MM-DD h:mm a'); 
 
var endTime2 = moment('2016-11-30 1:00 pm', 'YYYY-MM-DD h:mm a'); 
 
console.log("Beg Time = "+beginningTime.toString()); 
 
console.log("End Time1 = " +endTime1.toString()); 
 
console.log("End Time2 = "+endTime2.toString()); 
 
console.log(beginningTime.isBetween(endTime1,endTime2)); 
 

 
// Create a moment object considering only hour and minute 
 
function getMomentTime(m){ 
 
    return moment({hour: m.hour(), minute: m.minute()}); 
 
}; 
 

 
var t1 = getMomentTime(endTime1); 
 
var t2 = getMomentTime(endTime2); 
 
var begin = getMomentTime(beginningTime); 
 

 
console.log("Beg Time = "+begin.toString()); 
 
console.log("End Time1 = " +t1.toString()); 
 
console.log("End Time2 = "+t2.toString()); 
 

 
console.log(begin.isBetween(t1, t2));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.16.0/moment.min.js"></script>

関連する問題