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

如何用JavaScript结合MomentJs生成含当前日的近7天星期序列?

生成含当前日的最近7天星期序列(基于Moment.js)

方案一:直接用Moment.js日期操作(推荐)

这种方法无需手动维护星期数组,直接通过Moment的日期减法获取前6天的日期,再提取星期名称,天然支持跨周场景。

代码实现:

function dynamicLabels() {
  const weekDays = [];
  // 从6天前开始,依次获取到当天的日期
  for (let i = 6; i >= 0; i--) {
    // 计算i天前的日期,格式化为完整星期名称
    const dayName = moment().subtract(i, 'days').format('dddd');
    weekDays.push(dayName);
  }
  // 拼接成逗号分隔的字符串
  const result = weekDays.join(', ');
  console.log(result);
  return result;
}

逻辑说明:

  • moment().subtract(i, 'days'):获取当前日期往前推i天的日期对象
  • format('dddd'):将日期格式化为完整的星期名称(如Thursday、Friday)
  • 循环从i=6到i=0,依次收集6天前到当天的星期名,最终数组顺序符合要求(最后一项为当前日)

方案二:基于星期数组计算索引

如果希望通过预设的星期数组实现,可以通过索引偏移计算跨周的星期名称:

代码实现:

function dynamicLabels() {
  const daysOfWeek = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'];
  const currentDay = moment().format('dddd');
  const currentIndex = daysOfWeek.indexOf(currentDay);

  const weekDays = [];
  // 遍历从6天前到当天的偏移量(-6到0)
  for (let offset = -6; offset <= 0; offset++) {
    // 计算目标星期的索引,加7避免负数取模问题
    const targetIndex = (currentIndex + offset + 7) % 7;
    weekDays.push(daysOfWeek[targetIndex]);
  }

  const result = weekDays.join(', ');
  console.log(result);
  return result;
}

逻辑说明:

  • 通过indexOf获取当前日在数组中的索引
  • 利用(currentIndex + offset + 7) % 7计算目标星期的索引,+7是为了处理负数偏移(比如当前是周四(索引3),偏移-6时,3-6=-3,加7后为4,对应数组中的Friday)
  • 循环收集结果,最终得到符合要求的序列

内容的提问来源于stack exchange,提问作者Pauliecode

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 10:15:36