Как получить правильный день? - PullRequest
0 голосов
/ 19 февраля 2019

любая идея, как я могу сделать то, что в течение 6 дней система, которая знает дату, может заставить меня отображать некоторую информацию в зависимости от того, что является фактической датой.Пример: День 1: Информация День 2: Информация 2, но я не знаю, как я могу сделать то, что система знала, что сегодня 5, а завтра 6, а затем 1 и снова таким же образом до 6. Не считая воскресенье исуббота.

Дело в том, что сегодня день 5, а завтра будет день 6. Пример: Зависит от того, будет ли день 1,2,3,4,5 или 6, понедельник может бытьдень 1,2,3,4,5 или 6 в зависимости.Я хочу, чтобы посчитать день с датой.Сегодня 18 февраля - пятый день, поэтому какой день будет EX: 26 февраля?

Пока у меня есть это в моем коде, но я застрял:

//Definiendo Fecha
var hoy = new Date();
var dd = hoy.getDate();
var mm = hoy.getMonth() + 1; //January is 0!
var yyyy = hoy.getFullYear();

if (dd < 10) {
  dd = "0" + dd;
}

if (mm < 10) {
  mm = "0" + mm;
}

hoy = dd + "/" + mm + "/" + yyyy;
//Fin
document.getElementById("fecha").innerHTML = hoy;
contador = 4
function obtenerDia() {
  if (!(hoy = "17/02/2019")) {
    contador++
  }else {
    console.log("Algo pasa.")
  }
}

Я действительно будупризнателен за вашу помощь.

Контекст: я строю расписание, поэтому оно должно отображать правильное расписание дня, когда оно EX: День 1 ... 5, в зависимости от того, какой день является правильным.

1 Ответ

0 голосов
/ 19 февраля 2019

Для обобщенного решения рассмотрим:

function getDayNumber(baseDate, targetDate, daysInCycle) {
    var startOfBaseDate = new Date(baseDate).setHours(0, 0, 0, 0);
    var startOfTargetDate = new Date(targetDate).setHours(0, 0, 0, 0);
    var differenceInDays = Math.round((startOfTargetDate - startOfBaseDate) / 864e5);
    return ((differenceInDays % daysInCycle + daysInCycle) % daysInCycle) + 1;
}

  • baseDate - это любой Date объект (или отметка времени), который соответствует «Дню 1» цикла.
  • targetDate - это объект Date (или отметка времени), для которого вы хотите найти номер дня.
  • daysInCycle - это количество дней до повторения цикла, например 6 для шестидневного цикла.

Примеры:

getDayNumber(new Date(2019, 1, 18), new Date(2019, 1, 15), 6)  //=> 4
getDayNumber(new Date(2019, 1, 18), new Date(2019, 1, 16), 6)  //=> 5
getDayNumber(new Date(2019, 1, 18), new Date(2019, 1, 17), 6)  //=> 6
getDayNumber(new Date(2019, 1, 18), new Date(2019, 1, 18), 6)  //=> 1
getDayNumber(new Date(2019, 1, 18), new Date(2019, 1, 19), 6)  //=> 2
getDayNumber(new Date(2019, 1, 18), new Date(2019, 1, 20), 6)  //=> 3
getDayNumber(new Date(2019, 1, 18), new Date(2019, 1, 21), 6)  //=> 4
getDayNumber(new Date(2019, 1, 18), new Date(2019, 1, 22), 6)  //=> 5
getDayNumber(new Date(2019, 1, 18), new Date(2019, 1, 23), 6)  //=> 6
getDayNumber(new Date(2019, 1, 18), new Date(2019, 1, 24), 6)  //=> 1
getDayNumber(new Date(2019, 1, 18), new Date(2019, 1, 25), 6)  //=> 2
getDayNumber(new Date(2019, 1, 18), new Date(2019, 1, 26), 6)  //=> 3

Для baseDate или targetDate вы можете передать Date.UTC(2019, 1, 18), если хотите использовать день UTCв качестве основы.

Для targetDate вы можете передать либо new Date(), либо Date.now(), чтобы использовать текущую метку времени.

Также обратите внимание, что в последней строке функции используется модульрешение дано здесь , чтобы обеспечить правильную обработку отрицательных чисел (даты до базовой даты).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...