Задать вопрос
@shvedoffsky

Не могу понять как правильно задать условие?

Помогите пожалуйста, что то я не могу понять как правильно задать условие.
Суть такова:
Есть режимы работы отопления (Ожидания, дневной, ночной),
Необходимо что бы режим Ожидания работал с Воскресенья 18:00 по Пятницу 12:00.
В Пятницу после 12:00 Дневной
В Воскресенье после 18:00 Ожидание
Режим Дневной с 6:00 по 00:00
Режим Ночной с 00:00 по 6:00
Соответственно режим дневной и ночной должен меняться с Пятницы по Воскресенье

var now     = new Date(); 
var year    = now.getFullYear();
var month   = now.getMonth()+1; 
var day     = now.getDay();
var hour    = now.getHours();
var minute  = now.getMinutes();
var second  = now.getSeconds();
//var day = 6;

if(msg.topic === "/KotelTemperatura/DHT22/Temperatura"){
    if (day >= 0 && day <= 5 && hour <= 12 && hour >= 18)
        {
        return [msg,null,null];			//Режим ожидания
        }
	else if(day >= 5 && hour >= 12 && hour <=0)
			{return [null,msg,null];}	//Режим день
	else if(day > 5 && hour >= 0 && hour <= 6)
			{return [null,null,msg];}	//Режим ночь
	else if(day > 5 && hour >= 6 && hour <= 0)
			{return [null,msg,null];}	//Режим день
	else if(day >= 0 && hour >= 18)
			{return [msg,null,null];}	//Режим ожидания
  • Вопрос задан
  • 399 просмотров
Подписаться 2 Простой 2 комментария
Решения вопроса 2
Stalker_RED
@Stalker_RED
Так?
if (day==5 && hour>12) {
 // В Пятницу после 12:00 Дневной
} else if (day==6) { // суббота
  if (hour<6) {
    // ночной
  } else {
    // дневной
  }
} else if (day==0) { // воскресенье
  if (hour<6) {
    // ночной
  } else if(hour<18) {
    // дневной
  } else {
    // ожидание
  }
} else {
  // все остальное время - ожидание
}
Ответ написан
sergiks
@sergiks Куратор тега JavaScript
♬♬
С прицелом на более сложные кейсы предложу генерировать моменты, переключающие расписание, непременно в будущем. Т.е. создаём объект нужной даты-времени из текущего. И накидываем неделю по необходимости.

Все ключевые моменты в ближайшем будущем. Смотрим, который из них ближе всего. Это определяет то, какой сейчас интервал активен:
// Два момента, переключающих расписание
var s18 = getNextMoment( 0, 18); // Sunday 18:00
var f12 = getNextMoment( 5, 12); // Friday 12:00

function getNextMoment( day, hour) {
  var D = new Date(), dayDiff;
  D.setHours(hour);
  D.setMinutes(0);
  D.setSeconds(0);
  dayDiff = day - D.getDay();
  D.setDate( D.getDate() + dayDiff + ( dayDiff < 0 ? 7 : 0));
  return D;
}

if( f12 < s18) { // сначала наступит Пятница 12.00

  // Режим ожидания
  
} else { // сначала наступит Воскресенье 18
  
  if( new Date().getHours() < 6) {
    // Ночной
  } else {
    // Дневной
  }
  
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
Rocket Смоленск
от 80 000 до 130 000 ₽
div. Ставрополь
от 40 000 до 90 000 ₽
Wanted. Санкт-Петербург
До 220 000 ₽