Правило работающее в определённое время

Здравствуйте!

Подскажите, пожалуйста, почему правило типа таких не работают?

defineRule("test", 
{
whenChanged: "wb-gpio/EXT1_IN10",
then: function (newValue, devName, cellName) 
{
if (newValue) 
{
var date = new Date();
var date_start = new Date(date);
date_start.setHours(23);
date_start.setMinutes(00);
var date_end = new Date(date);
date_end.setHours(07);
date_end.setMinutes(10);
if ((date > date_start) && (date < date_end)) 
{
dev["wb-gpio/EXT5_R3A6"] =true;
    }
}
}
});

Если ставить до 23:59 работают, а ставишь с выходом на другие сутки не работают.
И ещё??? Как добавить в такие правила секунды?
Спасибо!

Добрый день.

У вас объекты:

Содержат в себе текущую дату и время.
Методами setHours и setMinutes вы меняете часы и минуты текущей даты.
Соответственно дальнейшее условие не сработает если date_start будет больше чем date_end, поскольку всегда будет:

date > date_start == true
date < date_end == false

либо наоборот:

date > date_start == false
date < date_end == true

либо:

date > date_start == false
date < date_end == false

Вам необходимо после определения даты:

var date_start = new Date(date);

Отнять один день:

date_start.setDate(date_start.getDate() - 1);

Так же необходимо изменить условие:

Установка секунд выполняется с помощью метода setSeconds.

1 лайк

Уф! А всё не так просто! :slight_smile: Спасибо большое!

Эта тема была автоматически закрыта через 7 дней после последнего ответа. В ней больше нельзя отвечать.