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

如何使用date-fns获取指定星期对应的最近日期?

基于date-fns的实现方案

你需要先引入date-fns对应的工具函数,完整实现代码如下:

import { startOfDay, setDay, getDay, addDays, startOfUTC } from 'date-fns'

getActualDate() {
  const days = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat']
  // 如需使用本地时间替换下方startOfUTC为startOfDay即可
  const date = startOfUTC(new Date(), 'day')
  const expectedDay = days.indexOf(this.day)

  // 设置为当周对应星期的日期
  let targetDate = setDay(date, expectedDay)

  // 若目标日期早于今天,顺延到下周
  if (getDay(targetDate) < getDay(new Date())) {
    targetDate = addDays(targetDate, 7)
  }

  return targetDate
}

逻辑说明

  • 上述实现完全对齐你原有的moment逻辑,返回值同样是原生Date对象,无需额外转换
  • 日期下标规则和moment一致:0对应周日、6对应周六,和你定义的days数组完全匹配,无需调整索引
  • 如果无需UTC时区处理,直接把startOfUTC(new Date(), 'day')替换为startOfDay(new Date())即可适配本地时间场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 17:06:05