Say the current time is 09:34:00
(hh:mm:ss
), and I have two other times in two variables:
JavaScript
x
3
1
var beforeTime = '08:34:00',
2
afterTime = '10:34:00';
3
How do I use Moment.JS to check whether the current time is between beforeTime
and afterTime
?
I’ve seen isBetween()
, and I’ve tried to use it like:
JavaScript
1
2
1
moment().format('hh:mm:ss').isBetween('08:27:00', '10:27:00')
2
but that doesn’t work because as soon as I format the first (current time) moment into a string, it’s no longer a moment object. I’ve also tried using:
JavaScript
1
2
1
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'))
2
but I get false
, because again when I format the current time, it’s no longer a moment.
How do I get this to work?
Advertisement
Answer
- You can pass moment instances to
isBetween()
- leave out the
format()
calls, what you want is to pass parse formats like int the first moment() of your second attempt.
That’s all:
JavaScript
1
19
19
1
var format = 'hh:mm:ss'
2
3
// var time = moment() gives you current time. no format required.
4
var time = moment('09:34:00',format),
5
beforeTime = moment('08:34:00', format),
6
afterTime = moment('10:34:00', format);
7
8
if (time.isBetween(beforeTime, afterTime)) {
9
10
console.log('is between')
11
12
} else {
13
14
console.log('is not between')
15
16
}
17
18
// prints 'is between'
19