Дата изменения объекта - PullRequest
0 голосов
/ 12 мая 2018

Я хочу реализовать расписание, которое повторяется каждые 2 недели (возможно, я могу использовать для этого Модулос?).Например, понедельник 14 мая - это 6-й день, а понедельник 21 мая - 1-й день. Затем понедельник 28 мая возвращается к 6-му дню. Пока что я пришел с собой, можно только проверить, является ли День понедельником.Однако этот понедельник может быть днем ​​1 или днем ​​6. Могу ли я отличить эти дни?Я прикрепил фрагмент кода ниже.Спасибо.

* Чтобы уточнить, я не обращаю внимания на выходные, поэтому вторым понедельником будет День 6, а не День 8.

var time1 = new Date(2018,4,11);
var time2 = new Date(2018,4,21);
var time3 = new Date();
var diff = time2.getDate() - time1.getDate();
var dayNum = document.getElementById("dayNumber");
var day = time2.getDay();
var isWeekend = (day == 6) || (day == 0); 

if((diff % 7 === 3) && day === 1){

	document.getElementById("dayNumber").innerHTML="Today is Day 6";	

} 



//if day divided by 7 leaves a remainder of 3, and it's a monday, that day is either day 1 or day 6 
<p id = "dayNumber"></p>

1 Ответ

0 голосов
/ 12 мая 2018

Во-первых, кажется, что вы думаете о паттерне, который повторяется в 14s , и пытаетесь решить его в mod 7, что будет довольно сложно. Вместо этого также работают в mod 14.

Во-вторых, 7 дней после дня 1 будет днем ​​8 (не днем ​​6), поэтому вам необходимо дополнительное преобразование для этих случаев. Если вас не волнуют субботы или воскресенья, мы могли бы «выбросить их» , сопоставив их все до 0. Это означает, что операция не является обратимой в выходные дни.

Вот функция, которая возвращает

  • 0, если ввод 0 или 6 (mod 7)
  • 2 меньше, чем вход (mod 14), если вход превышает 5 (mod 14)
  • вход (mod 14), если вход 5 или меньше (mod 14)

Так что вам просто нужно настроить начальное смещение

const day = x => {
    const y = (x % 7) % 6;
    if (y === 0) return 0;
    const z = x % 14;
    return z > 5
        ? z - 2
        : z;
};

day(0); // 0
day(1); // 1
day(2); // 2
day(3); // 3
day(4); // 4
day(5); // 5
day(6); // 0
day(7); // 0
day(8); // 6
day(9); // 7
day(10); // 8
day(11); // 9
day(12); // 10
day(13); // 0
day(14); // 0
day(15); // 1
// ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...