尝试使用moment.js
获得第二个星期四(例如)。 不本周四。下一个。这个日期是2个星期四。
我试过了
moment().add(1, 'week').day(4)
刚刚取消下周的星期四(仅在当前工作日在星期四之前有效)
有什么想法吗?
答案 0 :(得分:2)
"它只是下周四的星期四(只有当前工作日在星期四之前才有效)"
它正在发生,因为.add(1,'周')只是增加了7天,并为您提供下周的日期,并且您将获取该周的第4天。 下面的代码将完美适用于您的情况。
if(moment().weekday() < 4)
moment().add(1, 'week').day(4);
else
moment().add(2, 'week').day(4);
答案 1 :(得分:1)
不确定使用moment.js,但在下周四的普通js中给出了:
currentDate + (11 - d.getDay() % 7)
在接下来的星期四,只需添加7天。据推测,如果当天是星期四,那么就要在两周内举行星期四会议:
var d = new Date();
console.log(d.toString());
// Shift to next Thursday
d.setDate(d.getDate() + ((11 - d.getDay()) % 7 || 7) + 7)
console.log(d.toString())
或者通过一些测试封装在一个函数中:
function nextThursdayWeek(d) {
d = d || new Date();
d.setDate(d.getDate() + ((11 - d.getDay()) % 7 || 7) + 7);
return d;
}
// Test data
[new Date(2017,2,6), // Mon 6 Mar 2017
new Date(2017,2,7), // Tue 7 Mar 2017
new Date(2017,2,8), // Wed 8 Mar 2017
new Date(2017,2,9), // Thu 9 Mar 2017
new Date(2017,2,10), // Fri 10 Mar 2017
new Date(2017,2,11), // Sat 11 Mar 2017
new Date(2017,2,12), // Sun 12 Mar 2017
new Date() // Today
].forEach(function (date) {
console.log(date.toString() + ' -> ' + nextThursdayWeek(date).toString());
});