function getWeekNum(dt) {
if(typeof dt == "string"){
dt = new Date(dt);
}
let curDt = new Date(dt);
let YearFirstDt = new Date(dt.getFullYear(), 0, 1,23,59,59);
let divDay = YearFirstDt.getDay();
YearFirstDt.setDate(YearFirstDt.getDate() - divDay);
let rq = curDt - YearFirstDt;
let days = Math.ceil(rq / (24 * 60 * 60 * 1000));
let week = Math.ceil(days / 7);
return week;
}
function getBeginDateOfWeek(paraYear, weekIndex) {
var firstDay = getFirstDayOfYear(paraYear);
var time = (weekIndex - 1) * 7 * 24 * 3600000;
var beginDay = firstDay;
beginDay.setTime(firstDay.valueOf() + time);
return formatDate(beginDay);
}
function getEndDateOfWeek(paraYear, weekIndex) {
var firstDay = getFirstDayOfYear(paraYear);
var time = (weekIndex - 1) * 7 * 24 * 3600000;
var weekTime = 6 * 24 * 3600000;
var endDay = firstDay;
endDay.setTime(firstDay.valueOf() + weekTime + time);
return formatDate(endDay);
}
function getLastWeekStartDate() {
var now = new Date();
var nowDayOfWeek = now.getDay()-1;
var nowDay = now.getDate();
var nowMonth = now.getMonth();
var nowYear = now.getYear();
var weekStartDate = new Date(nowYear, nowMonth, nowDay - nowDayOfWeek - 7);
return formatDate(weekStartDate);
}
function getLastWeekEndDate() {
var now = new Date();
var nowDayOfWeek = now.getDay()-1;
var nowDay = now.getDate();
var nowMonth = now.getMonth();
var nowYear = now.getYear();
var weekEndDate = new Date(nowYear, nowMonth, nowDay - nowDayOfWeek - 1);
return formatDate(weekEndDate);
}
function formatDate(date) {
var myyear = date.getFullYear();
var mymonth = date.getMonth() + 1;
var myweekday = date.getDate();
if (mymonth < 10) {
mymonth = "0" + mymonth;
}
if (myweekday < 10) {
myweekday = "0" + myweekday;
}
return (myyear + "/" + mymonth + "/" + myweekday);
}
以下创建一个js文件
function GetFromToTime(eType, dt = undefined) {
if (dt === undefined) dt = new Date();
let validCase = ["本周", "上周", "本月", "上月"];
let funs = [
() => {
return [undefined, undefined];
},
(dt) => {
return GetFirstDayInYearFromWeek(GetWeekInYearFromDay(dt));
},
(dt) => {
let curWeek = GetWeekInYearFromDay(dt) - 1;
if(curWeek == 0){
let year = dt.getFullYear() - 1;
return GetFirstDayInYearFromWeek(GetWeekInYearFromDay(new Date(year,11,31)),year);
}
return GetFirstDayInYearFromWeek(curWeek);
},
(dt) => {
return [
new Date(dt.getFullYear(), dt.getMonth(), 1),
new Date(dt.getFullYear(), dt.getMonth() + 1, 0),
];
},
(dt) => {
return [
new Date(dt.getFullYear(), dt.getMonth() - 1, 1),
new Date(dt.getFullYear(), dt.getMonth(), 0),
];
},
];
let index = validCase.indexOf(eType);
return funs[index+1](dt);
}
function GetWeekInYearFromDay(dt) {
if(typeof dt == "string"){
dt = new Date(dt);
}
let curDt = new Date(dt);
let YearFirstDt = new Date(dt.getFullYear(), 0, 1);
let divDay = YearFirstDt.getDay();
YearFirstDt.setDate(YearFirstDt.getDate() - divDay);
let rq = curDt - YearFirstDt;
let days = Math.ceil(rq / (24 * 60 * 60 * 1000));
let week = Math.ceil(days / 7);
return week;
}
function GetFirstDayInYearFromWeek(week, year = undefined) {
week = week - 1;
if (year === undefined) year = new Date().getFullYear();
let YearFirstDt = new Date(year, 0, 1);
let divDay = YearFirstDt.getDay();
let FromDt = new Date(YearFirstDt);
FromDt.setDate(YearFirstDt.getDate() + week * 7 - divDay + 1);
let ToDt = new Date(YearFirstDt);
ToDt.setDate(YearFirstDt.getDate() + (week + 1) * 7 - divDay);
if (FromDt.getFullYear() != year) FromDt = new Date(year, 0, 1);
if (ToDt.getFullYear() != year) ToDt=new Date(year, 11, 31);
return [FromDt, ToDt];
}
export default {
GetFromToTime,
GetFirstDayInYearFromWeek,
GetWeekInYearFromDay
}