- 获取当前周数
- 判断年份是否为润年
- 获取某年某月的天数
- 计算两个日期差几天
- 周获取对应的日期
- 计算环比日期
export function getWeekNumber(y, m, d) {
var targetDay = new Date(y, m - 1, d);
var year = targetDay.getFullYear();
var month = targetDay.getMonth();
var days = targetDay.getDate();
for (var i = 1; i < m; i++) {
days += getMonthDays(year, i);
}
var yearFirstDay = new Date(year, 0, 1).getDay();
days += yearFirstDay - 1;
var week = Math.ceil(days / 7);
return week;
}
function isLeapYear(year) {
return (year % 400 == 0) || (year % 4 == 0 && year % 100 != 0);
}
export function getMonthDays(year, month) {
return [31, (isLeapYear(year) ? 29 : 28), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month - 1];
}
export function computation(sDate1, sDate2){
var aDate, oDate1, oDate2, iDays
aDate = sDate1.split("-")
oDate1 = new Date(aDate[1] + '-' + aDate[2] + '-' + aDate[0])
aDate = sDate2.split("-")
oDate2 = new Date(aDate[1] + '-' + aDate[2] + '-' + aDate[0])
iDays = parseInt(Math.abs(oDate1 - oDate2) / 1000 / 60 / 60 /24)
return iDays;
}
function yearDay(long){
var time = new Date(long * 1000)
var year = time.getFullYear();
var month = (time.getMonth()+1) < 10 ? '0' + (time.getMonth()+1) : (time.getMonth()+1);
var date = time.getDate() < 10 ? '0' + time.getDate() : time.getDate() ;
var yearday = {year,month,date}
return yearday
}
export function whichWeek(year){
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)
obj.last = yearDay( longnum / 1000 - 86400)
arr.push(obj)
}
let oneitem = yearDay(longnum / 1000)
oneitem.last = yearDay( longnum / 1000 + 86400 * 6)
arr.push(oneitem)
var lastStr
for(var i = 0 ; i<51 ;i++){
let long = d.setDate(d.getDate() + 7)
let obj = yearDay( long / 1000)
obj.last = yearDay( long / 1000 + 86400 * 6)
lastStr = long + 86400000 * 6
arr.push(obj)
}
if(lastStr < +new Date(year + 1, 0, 1)){
let obj = yearDay(lastStr / 1000 + 86400)
obj.last = yearDay(+new Date(year + 1, 0, 1) / 1000 - 86400)
arr.push(obj)
}else{
arr[arr.length-1].last = yearDay(+new Date(year + 1, 0, 1) / 1000 - 86400)
}
return arr
}
export function chainRatio(time){
let result = [];
let dayNum = (new Date(time[1]) - new Date(time[0])) / 1000 / 3600 / 24;
let startDate = new Date(time[0]);
startDate = new Date(startDate.getTime() - (1000 * 3600 * 24 * dayNum));
startDate = startDate.getFullYear()+"-"+(startDate.getMonth()+1)+"-"+startDate.getDate();
result.push(startDate + " 00:00:00");
let endDate = new Date(time[0]);
endDate = new Date(endDate.getTime() - (1000 * 3600 * 24 * 1));
endDate = endDate.getFullYear()+"-"+(endDate.getMonth()+1)+"-"+endDate.getDate();
result.push(endDate + " 23:59:59");
return result;
}