Disons que l'heure actuelle est 09:34:00
(hh:mm:ss
), Et j'ai deux autres fois dans deux variables:
var beforeTime = '08:34:00',
afterTime = '10:34:00';
Comment utiliser Moment.JS pour vérifier si l'heure actuelle est comprise entre beforeTime
et afterTime
?
J'ai vu isBetween()
, et j'ai essayé de l'utiliser comme:
moment().format('hh:mm:ss').isBetween('08:27:00', '10:27:00')
mais cela ne fonctionne pas, car dès que je formate le premier moment (heure actuelle) en chaîne, ce n'est plus un objet moment. J'ai aussi essayé d'utiliser:
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'))
mais j’obtiens false
, parce que lorsque je formate l’heure actuelle, ce n’est plus un moment.
Comment puis-je obtenir que cela fonctionne?
isBetween()
format()
, ce que vous voulez, c'est passer des formats d'analyse tels que int le premier moment () de votre deuxième tentative.C'est tout:
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'
J'ai dû utiliser isBetween
et isSame
dans mon cas pour couvrir le temps before
et after
que j'ai utilisé dans la condition isBetween.
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;
}