效果如图,选择年份,显示周数及对应日期
##写了一个函数,传入年份,返回周数数组
//设置周下拉框
export function setweekOption(year){//传入年份
year=new Date(year).getFullYear()
let days = getDay(year || new Date().getFullYear())
let weeks = {};
for (let i = 0; i < days.length; i++) {
let weeksKeyLen = Object.keys(weeks).length;
let daySplit = days[i].split('_');
if (weeks[weeksKeyLen] === undefined) {
weeks[weeksKeyLen + 1] = [daySplit[0]]
} else {
if (daySplit[1] == '1') {
weeks[weeksKeyLen + 1] = [daySplit[0]]
} else {
weeks[weeksKeyLen].push(daySplit[0])
}
}
}
let option= []
let weeksKeyLen = Object.keys(weeks).length;
for(let i = 1; i < weeksKeyLen+1; i++){
let obj = {};
obj.text = "第" + i + "周"+'('+weeks[i][0]+'-'+weeks[i][weeks[i].length-1]+')';
obj.value = i;
option.push(obj)
}
return option;
}
//一年每天日期➕星期数
export function getDay(year) {
let dates = [];
for (let i = 1; i <= 12; i++) {
for (let j = 1; j <= new Date(year, i, 0).getDate(); j++) {
dates.push(formatNumber(i) + '/' + formatNumber(j) + '_' + new Date([year, formatNumber(i), formatNumber(j)].join('-')).getDay())//返回当年所有日期(带星期数)
}
}
return dates;
}
export function formatNumber(n) {
return n.toString().length > 1 ? n : '0'+n
}
//判断当前日期为当年第几周
export function getYearWeek(date) {
//date1是当前日期
//date2是当年第一天
//d是当前日期是今年第多少天
//用d + 当前年的第一天的周差距的和在除以7就是本年第几周
var a = date.getFullYear()
var b = Number(date.getMonth()) + 1
var c = date.getDate()
// a, b, c当前日期的年、月、日
var date1 = new Date(a, parseInt(b) - 1, c),
date2 = new Date(a, 0, 1),
d = Math.round((date1.valueOf() - date2.valueOf()) / 86400000);
return Math.ceil((d + ((date2.getDay() + 1) - 1)) / 7);
}
//判断当前日期在当年周数日期
export function getWeekDate(date) {
let i=getYearWeek(date)
let option=setweekOption(date)
return option[i-1].text
}
//获取一年所有月的周数日期
export function getWeekArr(year) {
year = new Date(year).getFullYear()
let days = getDay(year || new Date().getFullYear())
// console.log(days)
let weeks = {};
for (let i = 0; i < days.length; i++) {
let weeksKeyLen = Object.keys(weeks).length;
let daySplit = days[i].split('_');
if (weeks[weeksKeyLen] === undefined) {
weeks[weeksKeyLen + 1] = [daySplit[0]]
} else {
if (daySplit[1] == '1') {
weeks[weeksKeyLen + 1] = [daySplit[0]]
} else {
weeks[weeksKeyLen].push(daySplit[0])
}
}
}
let weekArr={'01':[],'02':[],'03':[],'04':[],'05':[],'06':[],'07':[],'08':[],'09':[],'10':[],'11':[],'12':[]}
let arr=Object.keys(weekArr)
for(let j in weeks){
for (let k in arr){
if(weeks[j][0].slice(0,2)==arr[k]){
weekArr[arr[k]].push(weeks[j])}
}
}
return weekArr;
}
版权声明:本文为m0_46404694原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。