我想為一周中的每一天使用新日期生成一個陣列,例如為所有星期一創建一個陣列,這些星期一將在接下來的 60 天內出現,等等所有作業日
const availableTimeslots = [0, 1, 2, 3, 4, 5].map((id) => {
return {
id,
startTime: new Date(new Date(new Date().setDate(new Date().getDate() id)).setHours(9, 0, 0, 0)),
endTime: new Date(new Date(new Date().setDate(new Date().getDate() id)).setHours(17, 0, 0, 0)),
};
});
這將生成接下來 6 天的天數串列,但我想根據天數手動更改 setHours 屬性。例如,我希望所有的星期一都是從 setHours(9, 0, 0, 0) 到 setHours(15, 0, 0, 0)) 等等。
uj5u.com熱心網友回復:
daysAndTimes您可以創建一個名為也許指定一周中每一天的開始和結束時間的陣列。
然后,當您生成資料時,您通過 dow 查找開始和結束時間并將其傳遞給 setHours 函式。
// The total number of days to generate
const dayCount = 14;
// The start and end time for each day of the week, edit as needed...
const daysAndTimes = [
{ id: 0, name: 'Sunday', start: [8, 0, 0, 0], end: [14, 0, 0, 0]},
{ id: 1, name: 'Monday', start: [9, 0, 0, 0], end: [15, 0, 0, 0]},
{ id: 2, name: 'Tuesday', start: [10, 0, 0, 0], end: [16, 0, 0, 0]},
{ id: 3, name: 'Wednesday', start: [11, 0, 0, 0], end: [7, 0, 0, 0]},
{ id: 4, name: 'Thursday', start: [12, 0, 0, 0], end: [18, 0, 0, 0]},
{ id: 5, name: 'Friday', start: [13, 0, 0, 0], end: [19, 0, 0, 0]},
{ id: 6, name: 'Saturday', start: [14, 0, 0, 0], end: [20, 0, 0, 0]}
]
const availableTimeslots = [...new Array(dayCount).keys()].map(id => {
const date = new Date(new Date().setDate(new Date().getDate() id));
const dow = date.getDay();
return {
id,
startTime: new Date(new Date(date).setHours(...daysAndTimes[dow].start)),
endTime: new Date(new Date(date).setHours(...daysAndTimes[dow].end)),
};
});
console.log('Time slots:');
console.log('Id'.padEnd(6), 'Day'.padEnd(10), 'Start'.padEnd(22), 'End')
for(let timeSlot of availableTimeslots) {
console.log((timeSlot.id '').padEnd(6), timeSlot.startTime.toLocaleString('en', { weekday: 'long'} ).padEnd(10), timeSlot.startTime.toLocaleString('sv').padEnd(22), timeSlot.endTime.toLocaleString('sv'))
}
.as-console-wrapper { max-height: 100% !important; }
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/514675.html
下一篇:從隨機日期收集隨機年份
