You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 02:10:05