UNPKG

xxm-test-js

Version:

xxm-js通用js工具(utils)库

49 lines 2.08 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getWeek = getWeek; /** * 获取指定日期所在的周数(符合中国的周定义,即周一作为一周的开始)。 * Copyright (c) 2024 xxm * * @param {string | Date} [nowDay=new Date()] - 传入一个具体的日期或日期字符串。默认为当前日期。 * @returns {number} 返回一个数字,表示指定日期是一年中的第几周。 * * @example * * ```javascript * const currentWeekNumber = getWeek(); // 使用默认的当前日期 * console.log(`当前是一年中的第 ${currentWeekNumber} 周`); * * const specificWeekNumber = getWeek('2024-01-01'); // 指定日期字符串 * console.log(`指定日期是一年中的第 ${specificWeekNumber} 周`); * * const specificDate = new Date('2024-01-01'); * const specificWeekNumberFromObject = getWeek(specificDate); // 指定日期对象 * console.log(`指定日期对象是一年中的第 ${specificWeekNumberFromObject} 周`); * ``` */ function getWeek(nowDay = new Date()) { let dateToCheck; if (typeof nowDay === 'string') { dateToCheck = new Date(nowDay); } else { dateToCheck = nowDay; } // 获取当前年份的第一天 const startOfYear = new Date(dateToCheck.getFullYear(), 0, 1); const dayOfWeek = startOfYear.getDay() || 7; // 获取1月1日是星期几,0表示周日,1表示周一...7表示周六 // 计算该年第一个星期一的日期 let firstMonday = new Date(startOfYear); firstMonday.setDate(startOfYear.getDate() + (1 - dayOfWeek + 7) % 7); // 如果当前日期小于第一个星期一,则是第0周 if (dateToCheck < firstMonday) { return 52; } // 计算当前日期与第一个星期一之间的天数差 const pastDays = Math.floor((dateToCheck.getTime() - firstMonday.getTime()) / (24 * 60 * 60 * 1000)); // 计算当前是第几周,周一作为一周的开始 const weekNumber = pastDays / 7 + 1; return Math.floor(weekNumber); } //# sourceMappingURL=getWeek.js.map