function yearDay(long){
var time = new Date(long * 1000)
var year = time.getFullYear();
var month = time.getMonth()+1;
var week =null;
var datestart = time.getDate() ;
var dateend =null;
var yearday = {year,month,week,datestart,dateend}
return yearday
}
function whichWeek(year){
var d = new Date(year, 0, 1);
console.log("d:"+d)
console.log("d.getDay():"+d.getDay())
while (d.getDay() != 1) {
d.setDate(d.getDate() + 1);
}
let arr = []
console.log("arr.length:"+arr.length);
let longnum = d.setDate(d.getDate())
console.log("longnum:"+longnum)
console.log("+new Date(year, 0, 1):"+ +new Date(year, 0, 1))
if(longnum > +new Date(year, 0, 1)){
console.log("-----------第一周(不足7周)---------")
let obj = yearDay(+new Date(year, 0, 1) / 1000)
let last = yearDay( longnum / 1000 - 86400)
console.log("obj:"+obj["year"]+obj["month"]+obj["date"])
console.log("last:"+last["year"]+last["month"]+last["date"])
arr.push(obj)
console.log("arr.length:"+arr.length);
}
console.log("-----------第二周(第一周不足7天,此为第二周,足七天为第二周)---------")
let oneitem = yearDay(longnum / 1000)
console.log("oneitem:"+oneitem["year"]+oneitem["month"]+oneitem["date"])
let last = yearDay( longnum / 1000 + 86400 * 6)
console.log("last:"+last["year"]+last["month"]+last["date"])
arr.push(oneitem)
var lastStr
console.log("-----------中间的完整周---------")
for(var i = 0 ; i<51 ;i++){
let long = d.setDate(d.getDate() + 7)
let obj = yearDay( long / 1000)
console.log("obj:"+obj["year"]+obj["month"]+obj["date"])
let last = yearDay( long / 1000 + 86400 * 6)
console.log("last:"+last["year"]+last["month"]+last["date"])
lastStr = long + 86400000 * 6
arr.push(obj)
}
console.log("-----------最后一周---------")
if(lastStr < +new Date(year + 1, 0, 1)){
console.log("-----------如果不是完整周---------")
let obj = yearDay(lastStr / 1000 + 86400)
let last = yearDay(+new Date(year + 1, 0, 1) / 1000 - 86400)
console.log("obj:"+obj["year"]+obj["month"]+obj["date"])
console.log("last:"+last["year"]+last["month"]+last["date"])
arr.push(obj)
}else{
console.log("-----------如果是完整周---------")
let last = yearDay(+new Date(year + 1, 0, 1) / 1000 - 86400)
console.log("last:"+last["year"]+last["month"]+last["date"])
}
return arr
}
function whichWeek2(year){
var lastStr
var d = new Date(year, 0, 1);
while (d.getDay() != 1) {
d.setDate(d.getDate() + 1);
}
let arr = []
let longnum = d.setDate(d.getDate())
if(longnum > +new Date(year, 0, 1)){
let obj = yearDay(+new Date(year, 0, 1) / 1000)
let last = yearDay( longnum / 1000 - 86400)
if(last.datestart-obj.datestart>2){
obj.week =arr.length+1;
obj.week =arr.length+1;
obj.dateend = last["datestart"];
arr.push(obj)
}
}
let oneitem = yearDay(longnum / 1000)
let last = yearDay( longnum / 1000 + 86400 * 6)
oneitem.week =arr.length+1;
oneitem.dateend = last["datestart"];
arr.push(oneitem)
for(var i = 0 ; i<51 ;i++){
let long = d.setDate(d.getDate() + 7)
let obj = yearDay( long / 1000)
let last = yearDay( long / 1000 + 86400 * 6)
obj.week =arr.length+1;
obj.dateend = last["datestart"];
lastStr = long + 86400000 * 6
arr.push(obj)
}
if(lastStr < +new Date(year + 1, 0, 1)){
let obj = yearDay(lastStr / 1000 + 86400)
let last = yearDay(+new Date(year + 1, 0, 1) / 1000 - 86400)
if(last.datestart-obj.datestart>3){
obj.week =arr.length+1;
obj.dateend = last["datestart"];
arr.push(obj)
}
}
else{
let last = yearDay(+new Date(year + 1, 0, 1) / 1000 - 86400)
arr[arr.length-1].dateend = last["datestart"];
}
return arr
}
let week = whichWeek2(2023)
console.log(week)
console