function getWeek(y,m,d) { let day1 = new Date(y, parseInt(m) - 1, d); let day2 = new Date(y, 0, 1); let day = Math.round((day1.valueOf() - day2.valueOf()) / 86400000); return Math.ceil((day + ((day2.getDay() + 1) - 1)) / 7) } getWeek(2019, 9, 27)
参数:
y:年份;
m:月份;
d:日。
day1 是将传入的参数转换成标准时间,day2 是将传入的年份的 1 月 1 号转换成标准时间;
day 是计算得出传入的日期和1 月 1 日相差多少天;
最后 return 的就是传入日期是当前年的第几周。
特别说明:(day2.getDay() + 1) - 1
一周有 2 种说法,一个是周一到周日算一周,一个是周日到周六算一周。
这里的 -1 就是自然周(周一到周日)算一周,不 -1 就是周日到周六算一周。