//判断年有多少周次
// Y 传的参数为年份 2019
getYearWeeks(Y){
var S = Y + '-' + '01' + '-' + '01' //一年的开始时间
var E = Y + '-' + '12' + '-' + '31' //一年的结束时间
let currentYearDays = this.isLeapYear(Y) ? 366 : 365
let beforeDays = 7 - this.getDate(S)+1
let afterDays = this.getDate(E)let vaildDays = currentYearDays - beforeDays - afterDays
var weeks =(vaildDays / 7) + 1 //加的这一 若是这周是从星期三开始的 我减去了前面的天数
return weeks
},
//判断是否是闰年
isLeapYear(year){if(year % 4 === 0 && year % 100 !== 0 || year % 400 === 0){
// console.log(year + 'is leap year')returntrue}else{
// console.log(year + 'is not leap year')returnfalse}},
//获取某年某月某日是星球几
getDate(date){let oDate = new Date(date)let day = oDate.getDay()
switch (day){case 0:
// console.log('星期日')return 0
case 1:
// console.log('星期一')return 1
case 2:
// console.log('星期二')return 2
case 3:
// console.log('星期三')return 3
case 4:
// console.log('星期四')return 4
case 5:
// console.log('星期五')return 5
case 6:
// console.log('星期六')return 6
}},
//今天是今年的第几周
getTodayWeek(){
var d1 = new Date()
var d2 = new Date()
//下面是获取今年1月号是第几周
var Y = d1.getFullYear()
var resDate = Y + '-' + '01' + '-' + '01'
var W = new Date(Date.parse(resDate)).getDay() //今年的1月1号周几
//下面是获取今天是本年第几天
d2.setMonth(0);
d2.setDate(1);
var rq = d1-d2;
var s1 = Math.ceil(rq/(24*60*60*1000));
//(今年的第一天在周数)/7 等于第几周
var s2 = Math.ceil((s1+W)/7);
// console.log("今天是本年第"+s1+"天,第"+s2+"周");//周日做为下周的开始计算
return s2
},
//最后应该显示的周次数组
getWeekly(todayWeek,yearWeek){
var qianyi =[] //前一年
var dangq =[] //当前周
var houyinian =[]// 后一年
if(todayWeek >= 25){
//则取当前周前25周 和后25周
for(let i = yearWeek; i < yearWeek , i > todayWeek - 25 ; i--){let week = new Date().getFullYear() + '-' + (i)
dangq.unshift(week)}
//说明应该有下半年的周次
if(yearWeek - todayWeek < 26){
var number = 26 - (yearWeek - todayWeek)for(let j = 0; j < number ; j++){let week =(new Date().getFullYear() + 1 ) + '-' + (j+1)
houyinian.push(week)}}}else{
//则取前半年的
//取1周 到 当前周后26周
var weekNumber =''
if(todayWeek + 26 > yearWeek){
weekNumber = yearWeek
}else{
weekNumber = todayWeek + 26
}for(let i = 0; i < weekNumber; i++){let week = new Date().getFullYear() + '-' + (i+1)
dangq.push(week)}
//判断前一年的周次
if(yearWeek - 0 < 25){
var number = 25 - (yearWeek - todayWeek)
var lastNumber = this.getYearWeeks(new Date().getFullYear()-1)
//判断前一年的总周次
for(let j = 0; j > lastNumber - number,j < lastNumber; j--){let week =(new Date().getFullYear() - 1) + '-' + (j)
qianyi.unshift(week)}}}
var weekLy =(qianyi.concat(dangq)).concat(houyinian)return weekLy
},