如何获得正确的日期?

How to get the correct day?

知道我怎样才能让一个知道日期的系统可以让我根据实际日期显示一些信息,持续 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 天,那么哪一天是 EX: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: The day 1 ... 5 ,具体取决于哪一天是正确的。

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

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 是与周期的 "Day 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 以确保正确处理负数(基准日期之前的日期)。