如何获得正确的一天?

时间:2019-02-18 22:22:15

标签: javascript date time schedule

任何想法,我怎么能在6天之内完成一个知道日期的系统,才能使我根据实际日期显示一些信息。例如:第1天:信息第2天:信息2,但是我不知道如何使系统知道今天是5,明天将是6,然后将是1,然后以这种方式再次达到6。星期六。

问题是今天是第5天,明天是第6天。示例:取决于一天是1,2,3,4,5还是6天,星期一可以是1,2天, 3、4、5或6视情况而定。我想要一种用日期来计算日期的方法。今天2月18日是第5天,那么哪一天将是2月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时,它应该显示当天正确的时间表:Day 1 ... 5,取决于哪一天是正确的一天。

1 个答案:

答案 0 :(得分:0)

对于通用解决方案,请考虑:

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是与周期的“第1天”相对应的任何Date对象(或时间戳记)。
  • 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

对于baseDatetargetDate,如果要使用UTC日作为基础,则可以通过Date.UTC(2019, 1, 18)

对于targetDate,您可以传递new Date()Date.now()来使用当前时间戳。

还请注意,该函数的最后一行使用给定here的模数解,以确保正确处理负数(基准日期之前的日期)。