Время открытия и закрытия Moment js

#jquery #momentjs

#jquery #momentjs

Вопрос:

Я пытаюсь создать виджет открытия службы поддержки клиентов с moment.js

Что бы я ни пробовал, кажется, что виджет говорит «закрыт», когда время установлено как четверть часа. Таким образом, это работает, когда я устанавливаю время открытия до 17.00 CET, но это не работает, когда я устанавливаю время открытия до 17.15 CET.

Итак, вкратце: 17.00 работает, 16.59 не работает.

Я просто не вижу, что не так с форматированием времени.

Любая помощь с благодарностью!!

 function customerService(){
  var open = false;
  var time = '09.00-16.59'
  var now = moment();
  var combine = time.split('-')
  var opening_time = moment(combine[0], 'HH')
  var closing_time = moment(combine[1], 'HH')

  if(opening_time.isValid() amp;amp; closing_time.isValid()){

    console.log(opening_time.isValid() amp;amp; closing_time.isValid()) // shows always true 

    if(now < closing_time amp;amp; now > opening_time){

      console.log(now < closing_time amp;amp; now > opening_time) 
      /* shows true when time is a whole hour, but shows false 
       when time is eg a quarter of an hour. */

       open = true
    }
  }  

 console.log(open)

  $('.opening').each(function(){
    if(open){
      $(this).find('.status:first-child').addClass('open').removeClass('closed')
      $(this).find('.status:nth-child(2)').text( getAjaxTranslation('Open').toLowerCase())
    } else {
      $(this).find('.status:first-child').addClass('closed').removeClass('open')
      $(this).find('.status:nth-child(2)').text( getAjaxTranslation('Closed').toLowerCase())
    }
  });
}
  

Ответ №1:

Я нашел ответ!

Прежде всего, кажется, что opening_time и closing_time неправильно отформатированы. Поэтому я изменил это на

   var opening_time = moment(combine[0], 'hh:mm:ss')
  var closing_time = moment(combine[1], 'hh:mm:ss')
  

Во-вторых, правильный способ проверить, находится ли время между временами, заключается в следующем:

  if(now.isBetween(opening_time, closing_time)){
      open = true
 }