Работая с объектом `Date ()`, как я могу сравнить часы? - PullRequest
1 голос
/ 17 апреля 2020

Мне нужно сравнить часы:

var myDate = new Date().getHours();

if (myDate === 07 || myDate === 08) // condition if user's current time is between 7 and 8 AM
{
     // do something
}
else if (myDate == 08 || myDate === 09) // condition if user's current time is between 8 AM and 9 AM
    // and so on...
}

Каким будет элегантный способ сравнить его для каждого интервала часа (07-08, 08-09 и т. Д.)?

1 Ответ

2 голосов
/ 17 апреля 2020

Как улучшить свой код? Позвольте мне сосчитать пути ...

  1. Назовите переменную как-нибудь подходящую. Он хранит текущий час, а не дату, поэтому называть его myDate неуместно.

  2. Час не изменится во время выполнения кода. По крайней мере, для времени жизни кода это const муравей. Обозначьте его так:

    const currentHour = (new Date()).getHours();
    
  3. Когда время между 7:00 и 8:00, время будет равно 7. Если оно равно 8, то вы прошли время 8:00 , Таким образом, для этого часового блока вам важно только, чтобы время было ровно 7.

  4. Числа являются числами. Ведущие нули не имеют значения, и в более старых двигателях произойдет полный сбой для 08 и 09, поскольку ведущий ноль делает его восьмеричным числом, которое не допускает 8 или 9.

  5. Если у вас есть одна вещь для сравнения с несколькими значениями, это именно то, для чего switch.

    switch( currentHour) {
    case 7:
        // do something when it is between 07:00:00 and 07:59:59
        break;
    case 8:
        // do something else when it is between 08:00:00 and 08:59:59
        break;
    }
    

Дополнительные примечания, если вы хотите сделать то же самое для большего количества чем час, вы можете сделать это.

case 9:
case 10:
    // do the same thing from 09:00:00 to 10:59:59
    break;
...