function getWeekOfMonth(date, preNum = 0) {
date = date && new Date(date);
const firstDayOfMonth = new Date(date.getFullYear(), date.getMonth() - preNum, 1);
let dayOfWeekNum = firstDayOfMonth.getDay();
dayOfWeekNum === 0 && (dayOfWeekNum = 7);
const firstMondayOfMonth = dayOfWeekNum === 1 ? firstDayOfMonth : new Date(firstDayOfMonth.getTime() + (8 - dayOfWeekNum) * 24 * 60 * 60 * 1000);
const diffNum = (date.getTime() - firstMondayOfMonth.getTime()) / (24 * 60 * 60 * 1000 * 7);
if (diffNum > -1 && diffNum < 0) {
getWeekOfMonth(date, 1);
return;
}
return {
month: firstDayOfMonth.getMonth() + 1,
weekOfMonth: Math.floor(diffNum) + 1
}
}