Будьте очень осторожны при использовании NOT
logi c.
В ваши «обычные» дни магазин закрыт с 3:00 до 16:00. (Да, 16:00. Это потому, что вы проверяете только часы, поэтому 15:59 по-прежнему «час» из 3, поэтому он будет закрыт.)
В воскресенье магазин закрыт с полуночи до 4: 59 вечера, а также 22:00 до полуночи.
Взгляните на эту строку:
if (!(date.getHours() >= 17 && date.getHours() <= 22) || !(date.getHours() < 3)) {
Давайте выберем время 2 часа ночи. Это равно:
if (!(FALSE) || !(TRUE))
Это равно ИСТИНА, поэтому магазин закрыт.
То же самое для 4 утра: if (!(FALSE) || !(FALSE))
также равно TRUE
Возможно, вы хотите AND
вместо OR
в этих операторах logi c.
Я бы также рекомендовал вам преобразовать UTC
раз в ваше "местное" время , что Вам будет проще написать логи c. Это позволит избежать ошибок, когда UT C Sunday фактически не совпадает с вашим «местным» воскресеньем. Например, если вы используете UT C -6, тогда 2:00 UT C воскресенье - , а не воскресенье в вашем часовом поясе.