首页 > 解决方案 > 如何获得正确的日期?

问题描述

任何想法我怎么能在 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 ,具体取决于哪一天是正确的。

标签: javascriptdatetimeschedule

解决方案


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

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;
}

  • 是与周期的“第 1 天”相对应的baseDate任何对象(或时间戳)。Date
  • targetDateDate您希望为其查找日期编号的对象(或时间戳)。
  • 是循环重复之前的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

对于baseDateor ,如果您想使用 UTC 日作为基础targetDate,您可以通过。Date.UTC(2019, 1, 18)

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

另请注意,函数的最后一行使用此处给出的模解决方案,以确保正确处理负数(基准日期之前的日期)。


推荐阅读