Как проверить, что текущее время между двумя разами, используя моменты - PullRequest
1 голос
/ 02 июня 2019

Что я пытался сделать:

  getOpenStatus = (restaurant: _Restaurant) => {
    const closeHour = moment(restaurant.close_at, "HH:mm A").hours();
    const closeMin = moment(restaurant.close_at, "HH:mm A").minutes();
    const openHour = moment(restaurant.open_at, "HH:mm A").hours();
    const openMin = moment(restaurant.open_at, "HH:mm A").minutes();
    const closeMoment = moment({ hours: closeHour, minutes: closeMin });
    const openMoment = moment({ hours: openHour, minutes: openMin });
    return moment().isAfter(openMoment) && moment().isBefore(closeMoment);
  }

предположим, что текущее время 16:00

открыть @ 10:30 и закрыть @ 23:30

в этом случае отлично работает, потому что время совпадает.

Но что, если ресторан работает 23 часа:

открыть @ 10:30 и закрыть @ 9:30

Так как с этим справиться?

1 Ответ

0 голосов
/ 02 июня 2019
getOpenStatus = (restaurant: _Restaurant) => {
    const closeHour = moment(restaurant.close_at, "HH:mm A").hours();
    const closeMin = moment(restaurant.close_at, "HH:mm A").minutes();
    const openHour = moment(restaurant.open_at, "HH:mm A").hours();
    const openMin = moment(restaurant.open_at, "HH:mm A").minutes();
    const closeMoment = moment({ hours: closeHour, minutes: closeMin });
    const openMoment = moment({ hours: openHour, minutes: openMin });

    if (closeMoment.isBefore(openMoment)) {
        if (moment().isAfter(closeMoment)) closeMoment.add(1, "days");
        else openMoment.subtract(1, "days");
    }

    return moment().isAfter(openMoment) && moment().isBefore(closeMoment);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...