web-dev-qa-db-fra.com

Comment utiliser Moment.JS pour vérifier si l'heure actuelle est comprise entre 2 fois

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?

36
ᔕᖺᘎᕊ
  • Vous pouvez passer des instances de moments à isBetween()
  • laisser de côté les appels 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'
52
Linus Borg

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;
}
3
Woppi