获取下周一的日期

nub*_*ens 21 javascript date

如何在JavaScript中获得下周一?我在互联网上找不到任何相关内容,我也尝试过很多代码并对此有所了解但我无法真正做到这一点.

这是我的代码:

var d = new Date();
var day = d.getDay();
d = new Date(d.setDate(d.getDate() + day + (day == 0 ? -6 : 2)));
Run Code Online (Sandbox Code Playgroud)

Ber*_*aul 39

这样做:

var d = new Date();
d.setDate(d.getDate() + (1 + 7 - d.getDay()) % 7);
console.log(d);
Run Code Online (Sandbox Code Playgroud)

  • 这并不适用于所有情况,例如:"09/26/2017"它给出了32 :)你应该测试月份并计算每个月的天数 (4认同)
  • 我认为这不起作用 - 如果今天是星期一,那么这会将日期设置为今天。`d.getDay()` 将是 1,`1 + 7 -1` 将是 7,`7 % 7` 将是 0,所以你会得到 `setDate(d.getDate() + 0)` – 所以,不是下周一,而是同一天。 (3认同)
  • @MouradIdrissi它为我提供了正确的结果.`var d = new Date("2017-09-26")`,然后是2017年10月2日星期一,即2017年9月26日星期二之后的下一个星期一. (2认同)

Jar*_*a X 14

如果今天是星期一,这将在下周一给出

var d = new Date();
d.setDate(d.getDate() + (7-d.getDay())%7+1);
Run Code Online (Sandbox Code Playgroud)

如果今天是星期一,这将导致今天

var d = new Date();
d.setDate(d.getDate() + ((7-d.getDay())%7+1) % 7);
Run Code Online (Sandbox Code Playgroud)


tri*_*cot 6

如果您想要的一周中的实际日期是可变的(星期日,星期四,...),并且您想选择今天是否可以匹配,并且可能要从另一个日期开始(而不是今天),那么此功能可能会很有用:

function getNextDayOfTheWeek(dayName, excludeToday = true, refDate = new Date()) {
    const dayOfWeek = ["sun","mon","tue","wed","thu","fri","sat"]
                      .indexOf(dayName.slice(0,3).toLowerCase());
    if (dayOfWeek < 0) return;
    refDate.setHours(0,0,0,0);
    refDate.setDate(refDate.getDate() + !!excludeToday + 
                    (dayOfWeek + 7 - refDate.getDay() - !!excludeToday) % 7);
    return refDate;
}

console.log("Next is: " + getNextDayOfTheWeek("Wednesday", false));
Run Code Online (Sandbox Code Playgroud)

  • 这正是我所需要的,并且想知道为什么这个答案没有得到更多的支持......有没有办法将输出格式化为 DD MM YYYY?@特林科特 (4认同)

Pet*_*oby 5

如果您需要处理时区,一种选择是使用 UTCDate 方法setUTCDate()getUTCDate()。这允许一致性,因此无论时区设置如何,计算都是相同的。

var d = new Date();
d.setUTCDate(d.getUTCDate() + (7 - d.getUTCDay()) % 7 + 1);
Run Code Online (Sandbox Code Playgroud)

(这是上面的示例,返回下一个星期一的星期一)


Vu *_*han 5

这是我的解决方案

var days =[1,7,6,5,4,3,2];
var d = new Date();
d.setDate(d.getDate()+days[d.getDay()]);
console.log(d);
Run Code Online (Sandbox Code Playgroud)