У меня есть скрипт для предотвращения запуска триггера в определенное время, спасибо Амит Агарвал, который помог мне с эта тема.
Скрипт таков:
function shouldRunTrigger() {
var days = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];
var date = new Date();
var day = days[date.getDay()];
var hours = date.getHours();
if ((day === "Fri" && hours >= 17) || (day === "Sat" && hours <= 22)) {
return false;
}
return true;
}
function myTrigger() {
if (!shouldRunTrigger()) return;
// trigger code here
}
Этот код не позволяет моему триггеру работать с 17:00 пятницы до 22:00 субботы, и он отлично работает.
Теперь мне нужно добавить еще один else if, чтобы триггер не запускался в определенные даты диапазона, например:
кто-нибудь может помочь мне добавить это условие if else, пожалуйста?
Спасибо !



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы можете сделать это, сравнив текущую дату с объектом Date, как показано ниже:
function shouldRunTrigger() {
var days = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];
var date = new Date();
var day = days[date.getDay()];
var hours = date.getHours();
if ((day === "Fri" && hours >= 17) && (day === "Sat" && hours <= 22)) {
return false;
}
else if (date >= new Date('2019-03-23T15:00:00') || date <= new Date('2019-03-25T17:00:00')) {
return false;
}
return true;
}
function myTrigger() {
if (!shouldRunTrigger()) return;
// trigger code here
}
Объект Date в JavaScript имеет формат ГГГГ-ММ-ДДЧЧ:ММ:СС. Дополнительные сведения см. в веб-документах MDN здесь.
Я изменил || для && и теперь работает отлично
Извиняюсь! Плохо, это должно быть &&, так как оно должно входить в диапазон дат. || возвращал false для любой даты после первого параметра и любой даты до второго параметра, из-за чего оператор else if приводил к return false для каждой переданной даты. У меня исправил мой ответ! Спасибо, что указали :)
Вы можете добавить еще одну проверку в метод shouldRunTrigger().
var current = new Date()
var min = new Date(2019,2,23,15);
var max = new Date(2019,2,25,17);
if (current > min && current < max) return false;
Это должно быть &&?
Я поменял || на && и теперь работает отлично.
Окончательный код, работающий для этого:
else if (date >= new Date('2019-03-10T15:00:00') && date <= new Date('2019-04-25T17:00:00')) {
return false;
}
Спасибо за вашу помощь!
Привет, это выглядит хорошей идеей, проблема в том, что я это делаю, но он никогда не запускает триггер, даже если я изменю даты на апрель или любые другие даты, я всегда получаю возврат false; Вы знаете, как это исправить? Спасибо