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 就是周日到周六算一周。