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

如何利用Moment.js获取当前周的第一天与最后一天日期?

获取当前周的第一天到最后一天(Moment.js实现)

嘿,我刚好之前做数据筛选时遇到过一模一样的需求,用Moment.js的weekday()完全能搞定,而且用法灵活适配各种场景!

核心思路

Moment.js的weekday()方法可以直接将日期定位到当前周的指定天数,默认规则是:

  • 0 = 周日
  • 1 = 周一
  • ...
  • 6 = 周六

利用这个特性,我们可以快速锁定当前周的首尾日期,再配合startOf('day')和endOf('day')处理时间部分,就能完美满足数据筛选的精准性要求。

代码示例

情况1:周日为一周起始日(默认配置)

// 当前周第一天(周日,00:00:00)
const weekStart = moment().weekday(0).startOf('day').format('YYYY-MM-DD HH:mm:ss');
// 当前周最后一天(周六,23:59:59)
const weekEnd = moment().weekday(6).endOf('day').format('YYYY-MM-DD HH:mm:ss');

如果只需要纯日期字符串(不带时间),可以简化成:

const weekStart = moment().weekday(0).format('YYYY-MM-DD');
const weekEnd = moment().weekday(6).format('YYYY-MM-DD');

情况2:周一为一周起始日

如果业务要求周一作为一周的开始,有两种实现方式:

方式一:直接调整weekday参数
// 周一作为第一天
const weekStart = moment().weekday(1).startOf('day').format('YYYY-MM-DD');
// 周日作为最后一天
const weekEnd = moment().weekday(0).endOf('day').format('YYYY-MM-DD');
方式二:全局修改周起始配置(更直观)

先通过updateLocale统一设置规则,后续使用weekday()会更顺手:

// 全局配置:周一为一周第一天
moment.updateLocale('en', {
  week: {
    dow: 1 // dow = day of week,1代表周一
  }
});

// 此时weekday(0)就是周一,weekday(6)就是周日
const weekStart = moment().weekday(0).startOf('day').format('YYYY-MM-DD');
const weekEnd = moment().weekday(6).endOf('day').format('YYYY-MM-DD');

为什么适合数据筛选?

通过startOf('day')和endOf('day')处理后,得到的是当前周首尾日期的完整时间范围,比如周日00:00到周六23:59,用这个范围筛选数据时,不会漏掉任何一天的记录,精准度拉满。

内容的提问来源于stack exchange,提问作者Luiz Ricardo Cardoso

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 09:04:23