js - 计算今天是今年的第几周(周一算开始)

2,144 阅读1分钟

emmm 上代码

// 是否润年
var getMaxY = y =>  Boolean(
	y % 4 ==0 && y % 100 != 0 || y % 400==0
)
var getAugNum = n => getMaxY(n) ? 29 : 28
// --获取年对应的月份
var getMothNum = y => ([ 31, getAugNum(y), 31, 30,  31, 30, 31,31, 30, 31, 30, 31 ])

// ----计算星期---
// 计算月份代码
let getMothCode = isR => isR ? '622503514624'.split('') : '521503514624'.split('')
// 计算年的代码
let getYearCode = a => {
    a += ''
    let y = + a.substr(a.length - 2, a.length - 1)
    return ((y / 4 + y) | 0) % 7
}
// --获取今天的星期
let getStarNV = (y, m, d) => {
    let mc = +getMothCode(getMaxY(y))[m - 1]
    let yc = getYearCode(y)
    return (d + mc + yc) % 7 
}

var week = (y, m, d) => Math.ceil(
        (getMothNum(y).filter((_, i) =>  i + 1 <= m).reduce((a, b) => a + b, 0) - (getMothNum(y)[m - 1] - d) + (getStarNV(y, m ,d) - 1)) / 7
    )
console.log(week(2019, 09, 10))
console.log(getStarNV(2019, 09, 10) - 1)
// 一 二 三
// 31 1  2

--END--