如何使用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
相关产品推荐
相关产品推荐

