假设当前时间为09:34:00
(hh:mm:ss
),我在两个变量中还有两次:
var beforeTime = '08:34:00',
afterTime = '10:34:00';
如何使用Moment.JS检查当前时间是否在beforeTime
和afterTime
之间?
我见过isBetween()
,我试图像使用它一样:
moment().format('hh:mm:ss').isBetween('08:27:00', '10:27:00')
但这不起作用,因为只要我将第一个(当前时间)时刻格式化为字符串,它就不再是时刻对象。我也尝试过使用:
moment('10:34:00', 'hh:mm:ss').isAfter(moment().format('hh:mm:ss')) && moment('08:34:00', 'hh:mm:ss').isBefore(moment().format('hh:mm:ss'))
但是我得到false
,因为当我格式化当前时间时,它不再是片刻。
如何让它发挥作用?
答案 0 :(得分:47)
isBetween()
format()
次来电,您想要的是在第二次尝试的第一时刻()传递解析格式,例如int。全部:
var format = 'hh:mm:ss'
// var time = moment() gives you current time. no format required.
var time = moment('09:34:00',format),
beforeTime = moment('08:34:00', format),
afterTime = moment('10:34:00', format);
if (time.isBetween(beforeTime, afterTime)) {
console.log('is between')
} else {
console.log('is not between')
}
// prints 'is between'
答案 1 :(得分:3)
在我的案例中,我必须使用isBetween
和isSame
来涵盖我在isBetween条件中使用的before
和after
时间。
function getTimeCategory(time) {
let timeCategory = '';
const timeFormat = 'HH:mm:ss';
if (
time.isBetween(moment('00:00:00', timeFormat), moment('04:59:59', timeFormat)) ||
time.isSame(moment('00:00:00', timeFormat)) ||
time.isSame(moment('04:59:59', timeFormat))
) {
timeCategory = 'DAWN';
} else if (
time.isBetween(moment('05:00:00', timeFormat), moment('11:59:59', timeFormat)) ||
time.isSame(moment('05:00:00', timeFormat)) ||
time.isSame(moment('11:59:59', timeFormat))
) {
timeCategory = 'MORNING';
} else if (
time.isBetween(moment('12:00:00', timeFormat), moment('16:59:59', timeFormat)) ||
time.isSame(moment('12:00:00', timeFormat)) ||
time.isSame(moment('16:59:59', timeFormat))
) {
timeCategory = 'NOON';
} else if (
time.isBetween(moment('17:00:00', timeFormat), moment('23:59:59', timeFormat)) ||
time.isSame(moment('17:00:00', timeFormat)) ||
time.isSame(moment('23:59:59', timeFormat))
) {
timeCategory = 'NIGHT';
}
return timeCategory;
}
答案 2 :(得分:1)
我使用了矩函数组合 isSameOrAfter 和 isSameOrBefore 而不是 isBetween。
if(moment(currentTime,'HH:mm:ss').isSameOrAfter(moment(shift_dayFrom,'HH:mm:ss')) &&
moment(currentTime,'HH:mm:ss').isSameOrAfter(moment(shift_dayTo,'HH:mm:ss')))
答案 3 :(得分:-2)
该页面上的示例是
moment('2010-10-20').isBetween('2010-10-19', '2010-10-25'); // true
您的代码中没有调用format
函数,因此我建议您尝试
moment('09:34:00').isBetween('08:34:00', '10:34:00');