2016-11-16 1660 views
0

在此先感谢...我刚刚使用Moment,并且在下面的代码中不确定为什么检查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

我在想,因为时间的原因,在这之间应该返回假。上午3:45不在上午9点到下午1点之间 – Rich

回答

2

由于文档说,isBetween

检查了一下是其他两个时刻之间,可选地看着单位比例(分钟,小时,天,等)。本场比赛是独家户头

比较采用完整的对象(包括日期和时间信息),以便为您的示例中的结果是正确的(2016-11-25 3:45 am2016-11-22 9:00 am2016-11-30 1:00 pm之间)。

如果你只比较时间,你的时刻对象应该有相同的日期值(日,月,年)。一种从你的瞬间对象(beginningTime,endTime1,endTime2)开始实现的方法是使用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>

相关问题