如何在 javascript 中获取下周一的 10 个数组
How to get an array of 10 next Mondays in javascript
这是我的代码,但是这个数组 returns 只有相同的元素,我正在尝试创建一个包含 10 个元素的数组,因为下周一有人知道请帮助我
我的代码:
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;
}
let arr=[]
for(let i=0;i<10;i++){
arr.push(arr[i]=getNextDayOfTheWeek("Monday",false))
}
console.log(arr)
getNextDayOfWeek
被赋予相同的输入,因此将具有相同的输出。
您需要:
- 建立基准日期并将其作为第三个参数传递
- 在后续调用中传递结果日期,使其提前
- 表示如果与请求的日期匹配则应排除基线日期
- 在结果数组中插入一个
new Date
,因为日期是对象,因此通过引用传递。如果您不这样做,每次调用 getNextDayOfTheWeek
都会更改存储在结果数组每个位置中的同一个对象。
- 请注意,您的当地时间可能会导致显示的日期早于或晚于预计日期。您可能需要决定如何考虑当地时区(请注意,结果可能会在指示 UTC 的时间结束时显示
Z
)。
let arr=[]
let refDate = new Date()
for(let i=0;i<10;i++){
refDate = getNextDayOfTheWeek("Monday",false, refDate)
arr.push(refDate)
}
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;
}
let arr=[]
let refDate = new Date()
for(let i=0;i<10;i++){
refDate = getNextDayOfTheWeek("Monday", i > 0 ? true : false, refDate)
arr.push(new Date(refDate))
}
console.log(arr)
这是我的代码,但是这个数组 returns 只有相同的元素,我正在尝试创建一个包含 10 个元素的数组,因为下周一有人知道请帮助我
我的代码:
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;
}
let arr=[]
for(let i=0;i<10;i++){
arr.push(arr[i]=getNextDayOfTheWeek("Monday",false))
}
console.log(arr)
getNextDayOfWeek
被赋予相同的输入,因此将具有相同的输出。
您需要:
- 建立基准日期并将其作为第三个参数传递
- 在后续调用中传递结果日期,使其提前
- 表示如果与请求的日期匹配则应排除基线日期
- 在结果数组中插入一个
new Date
,因为日期是对象,因此通过引用传递。如果您不这样做,每次调用getNextDayOfTheWeek
都会更改存储在结果数组每个位置中的同一个对象。 - 请注意,您的当地时间可能会导致显示的日期早于或晚于预计日期。您可能需要决定如何考虑当地时区(请注意,结果可能会在指示 UTC 的时间结束时显示
Z
)。
let arr=[]
let refDate = new Date()
for(let i=0;i<10;i++){
refDate = getNextDayOfTheWeek("Monday",false, refDate)
arr.push(refDate)
}
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;
}
let arr=[]
let refDate = new Date()
for(let i=0;i<10;i++){
refDate = getNextDayOfTheWeek("Monday", i > 0 ? true : false, refDate)
arr.push(new Date(refDate))
}
console.log(arr)