Как определить, есть ли у следующих 3 дней выходные?

#javascript #jquery

#javascript #jquery

Вопрос:

Пока это то, что я сделал. Но результат отличается от того, что я ожидаю, за исключением 3-го примера, но он отображает только 1 date не всю дату.

 var datess = new Date();
var ndate = new Date(datess.getDate()   1);
var ndate2 = datess.getDate()   1;


document.getElementById("newdate").innerHTML = datess;
document.getElementById("newdate1").innerHTML = ndate;
document.getElementById("newdate2").innerHTML = ndate2;  
 <div id = "newdate">

</div>
<div id = "newdate1">

</div>
<div id = "newdate2">

</div>  

Чего я хочу добиться, так это того, что после определения, есть ли у него выходные, он перейдет в a variable , и эта переменная будет использоваться в цикле.

Ответ №1:

Первое, что нам нужно знать, это то, что выходные состоят из дат:

 0 - Sunday
6 - Saturday
  

Теперь нам нужно проверить, содержат ли следующие три дня это. Возможные значения относятся к среде. Итак, вам нужно проверить:

 if (dateObj.getDay() >= 3)
  return true;
  

Вам не нужно проверять наличие других, потому что диапазон есть 0 - 6 , и этот код охватывает все. Даже если вы укажете воскресенье, которое имеет значение 0 , оно говорит false , что понедельник не является выходным.

 <input type="date" id="dtobj" placeholder="Enter a Date" />
<button onclick="if ((new Date(dtobj.value)).getDay() >= 3) alert('Weekend!'); else alert('No Weekend!');">Check</button>  

Приведенный выше код отлично работает в Chrome. Пожалуйста, обратите внимание, что это Date относится к клиентской машине, а не к серверу.

Ответ №2:

 var datess = new Date();
var ndate = new Date(datess.getTime()   86400 * 1000);
var ndate2 = new Date(datess.getTime()   86400 * 2 * 1000);

document.getElementById("newdate").innerHTML = datess   check_weekend(datess);
document.getElementById("newdate1").innerHTML = ndate   check_weekend(ndate);
document.getElementById("newdate2").innerHTML = ndate2   check_weekend(ndate2);

function check_weekend(t) {
    if (t.getDay() == 0 || t.getDay() == 6) {
        return "(Yes)";
    } else {
        return "(No)"
    }
}  
 <div id = "newdate">

</div>
<div id = "newdate1">

</div>
<div id = "newdate2">

</div>  

Ответ №3:

 var today = new Date();
var tomorrow = new Date(today.getTime()   24 * 60 * 60 * 1000);
var afterTomorrow = new Date(tomorrow.getTime()   24 * 60 * 60 * 1000);


document.getElementById("newdate").innerHTML = today;
document.getElementById("newdate1").innerHTML = tomorrow;
document.getElementById("newdate2").innerHTML = afterTomorrow;

//getDay() return day number
//0 - Sunday
//1 - Monday
//2 - Tuesday
//...
if (tomorrow.getDay() == 0) {
  console.log("Tomorrow is sunday !");
} else if (tomorrow.getDay() == 6) {
  console.log("Tomorrow is Saturday !");
}
//Do same with after tomorrow  
 <div id="newdate"></div>
<div id="newdate1"></div>
<div id="newdate2"></div>  

Комментарии:

1. Это что-нибудь объясняет?

2. @PraveenKumar Он делает то, что пытался сделать OP

3. @Weedoze да. Но могу ли я спросить, зачем использовать время? не дата?

4. @TrafalgarDLaw Это способ получить полную дату завтра

5. @Weedoze спасибо. Я подумаю о том, как я могу использовать этот метод в своем циклическом коде.

Ответ №4:

Вам нужно посмотреть на методы даты.

Вы не можете добавить 1 к дате, вам нужно использовать его методы «get» / «set».

 var d = new Date()
d.getFullYear()   // 2016
d.getMonth()   // 9
d.getDate()   // 11
  

Если вы используете d.getDay() его, он вернет день недели, и это то, что вам нужно, чтобы найти выходные.

Ответ №5:

Как насчет этого:

 var DayToCheck = new Date();
if (DayToCheck.getDay() == 6 || DayToCheck.getDay() == 0) alert('DayToCheck is weekend!');