如何在JavaScript中获取今日起未来7天的带星期日期?
获取今日起未来7天带星期的日期(JavaScript实现)
以下是直接可用的代码实现,同时适配你在Firebase中按周筛选预订数据的需求:
// 生成今日起未来7天的日期(含当天),格式示例:"2024-05-20 周一" function getNext7DaysWithWeekday() { // 对应Date.getDay()返回的0(周日)到6(周六) const weekdayNames = ['周日', '周一', '周二', '周三', '周四', '周五', '周六']; const dateList = []; const today = new Date(); for (let i = 0; i < 7; i++) { // 每次创建新Date对象,避免修改原始日期 const targetDate = new Date(today); targetDate.setDate(today.getDate() + i); // 格式化日期为YYYY-MM-DD格式(适配Firebase存储格式) const year = targetDate.getFullYear(); const month = String(targetDate.getMonth() + 1).padStart(2, '0'); const day = String(targetDate.getDate()).padStart(2, '0'); const formattedDate = `${year}-${month}-${day}`; // 获取对应星期名称 const weekday = weekdayNames[targetDate.getDay()]; dateList.push(`${formattedDate} ${weekday}`); } return dateList; } // 调用示例 const upcomingWeekDates = getNext7DaysWithWeekday(); console.log(upcomingWeekDates);
关键细节说明
- 日期处理:通过
setDate()叠加天数,每次循环创建新Date对象防止原日期被篡改 - 格式统一:用
padStart(2, '0')保证月份、日期始终为两位数字,和Firebase中常见的日期存储格式对齐 - 星期映射:
weekdayNames数组对应getDay()的返回值,可根据需求修改为英文(如['Sunday', 'Monday', ...])
适配Firebase数据筛选
如果你的Firebase文档中用bookingDate字段存储YYYY-MM-DD格式的日期,可直接提取生成的日期字符串构建查询:
// 提取纯日期字符串用于Firebase查询 const pureDates = upcomingWeekDates.map(item => item.split(' ')[0]); // 查询未来7天的预订记录 firebase.firestore().collection('bookings') .where('bookingDate', 'in', pureDates) .get() .then(snapshot => { snapshot.forEach(doc => { console.log(doc.id, '=>', doc.data()); }); }) .catch(err => { console.error('查询失败:', err); });
内容的提问来源于stack exchange,提问作者Neha
相关产品推荐
相关产品推荐

