js工具函数,根据输入的 yyyy-mm-dd 输出所属周的开始日期与结束日期

142 阅读1分钟
function getWeekStartAndEnd(dateStr) {
  const date = new Date(dateStr)
  const dayOfWeek = date.getDay() // 获取星期几,0是周日,6是周六
  const startOfWeek = new Date(date)
  const endOfWeek = new Date(date)

  // 计算周的开始日期
  startOfWeek.setDate(date.getDate() - dayOfWeek)

  // 计算周的结束日期
  endOfWeek.setDate(date.getDate() - dayOfWeek + 6)

  // 格式化日期为 yyyy-mm-dd
  const formatDate = (date) => {
    const d = new Date(date)
    let month = '' + (d.getMonth() + 1)
    let day = '' + d.getDate()
    let year = d.getFullYear()

    if (month.length < 2) month = '0' + month
    if (day.length < 2) day = '0' + day

    return [year, month, day].join('-')
  }

  return {
    start: formatDate(startOfWeek),
    end: formatDate(endOfWeek),
  }
}

// 使用示例
const weekDates = getWeekStartAndEnd('2024-04-18')
console.log(`Week starts on: ${weekDates.start} and ends on: ${weekDates.end}`)