js如何计算指定的日期范围内有多少周?

比如:开始时间2019-11-22 结束时间2019-12-12
怎么计算这个范围内有多少周?
最后组成一个json数组格式。
如下:

[
  {
    name : "第1周"
  },
  {
    name : "第2周"
  },
  {
    name : "第3周"
  },
  ....
]
阅读 4.1k
2 个回答

不知你这个计算范围是否包含日期所在的那个周否?
推荐使用 moment

获取选择日期处于当年的第几周可以通过如下方式获取:

console.log(moment("2019-11-22").week()); //输出:47
console.log(moment("2019-12-22").week()); //输出:52

根据上面的方法能获取到两个日期的差值来计算范围内有几个周,之后如何处理数据应该就简单多了,想弄成什么数据格式都可以了

// node 测试
const moment = require('moment')

function initItem(arr, index) {
    arr[index] = { name: `第${index + 1}周`, days: [] }
    return arr
}

function calWeek(startTime, endTime) {
    moment.locale('fr', {
        week: {
            dow: 1 // Monday is the first day of the week.
        }
    })

    let startDay = moment(startTime)
    let endDay = moment(endTime)

    let index = 0
    let temp = []
    initItem(temp, index)

    while (!startDay.isAfter(endDay)) {
        if (startDay.days() === 1 && temp[index].days.length) {
            index++
            initItem(temp, index)
        }

        temp[index].days.push(startDay.format('YYYY-MM-DD'))

        startDay.add(1, 'd')
    }

    return temp
}

console.log(calWeek('2019-11-18', '2020-01-01'))

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题