Скрипт приложений Google, чтобы остановить триггер в определенных диапазонах дат

У меня есть скрипт для предотвращения запуска триггера в определенное время, спасибо Амит Агарвал, который помог мне с эта тема.

Скрипт таков:

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, чтобы триггер не запускался в определенные даты диапазона, например:

  • Я не хочу запускать его с 15:00 23 марта до 17:00 25 марта.
  • Я пытался сделать это без везения

кто-нибудь может помочь мне добавить это условие if else, пожалуйста?

Спасибо !

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
284
3

Ответы 3

Вы можете сделать это, сравнив текущую дату с объектом 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; Вы знаете, как это исправить? Спасибо

SATH59 15.03.2019 05:14

Я изменил || для && и теперь работает отлично

SATH59 15.03.2019 05:22

Извиняюсь! Плохо, это должно быть &&, так как оно должно входить в диапазон дат. || возвращал false для любой даты после первого параметра и любой даты до второго параметра, из-за чего оператор else if приводил к return false для каждой переданной даты. У меня исправил мой ответ! Спасибо, что указали :)

planet-pranav 15.03.2019 09:56

Вы можете добавить еще одну проверку в метод 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;

Это должно быть &&?

tehhowch 14.03.2019 14:02

Я поменял || на && и теперь работает отлично.

Окончательный код, работающий для этого:

else if (date >= new Date('2019-03-10T15:00:00') && date <= new Date('2019-04-25T17:00:00')) {
    return false;
}

Спасибо за вашу помощь!

Другие вопросы по теме