首页 > 解决方案 > MomentJs 星期一按周数错误

问题描述

我有一个函数可以获取格式为 YYYY-MM-DD 的日期键,例如。2021-03-29(星期一)获取其周数(13),并使用它,获取该周数的星期一,如果是 2021-03-29,它将是同一天,如果是 2021-03-30 它应该是 2021-03-29 等,只要它在同一周(按周数)

我为它创建了一个沙箱。

http://jsfiddle.net/x6sL8k7e/1/

测试代码

const dateKey = "2021-03-29"
const weekNumber = moment(dateKey, 'YYYY-MM-DD').isoWeek() // getting week nr - 13
    
      
const date = moment(dateKey, 'YYYY-MM-DD')
        .clone()
        .week(weekNumber) // want to get monday for week #13
        .day('Monday')
        
console.log('date', date.format('YYYY-MM-DD'))

PS。它与今年的日期(任何日期)完美配合

标签: javascriptmomentjs

解决方案


isoWeekCiao,我用week这样的替换解决了你的问题:

const dateKey = "2021-03-29"
const weekNumber = moment(dateKey, 'YYYY-MM-DD').week()
    console.log(weekNumber)
      
      const date = moment(dateKey, 'YYYY-MM-DD')
        .clone()
        .week(weekNumber)
        .day('Monday')
        
        console.log('date', date.format('YYYY-MM-DD'))

在这里您的代码已修改。

无论如何,我理解您的问题,并且可能与 2020 年有 53 周而 2021 年有 52 周的事实有关。

在此处输入图像描述

所以isoWeek在第 13 周正确地重新运行,但week在第 14 周(也许)重新运行,因为它考虑每年由 52 周组成。


推荐阅读