Date.prototype.Format = function (fmt) { //author: meizz
var o = {
"M+": this.getMonth() + 1, //月份
"d+": this.getDate(), //日
"h+": this.getHours(), //小时
"m+": this.getMinutes(), //分
"s+": this.getSeconds(), //秒
"q+": Math.floor((this.getMonth() + 3) / 3), //季度
"S": this.getMilliseconds() //毫秒
};
if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
for (var k in o)
if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
return fmt;
}
function getMonthFirstLastDay(date){
date = date.match(/\d+/g)
const year = date[0]
const month = Number(date[1])
let firstDay=new Date(year,month-1,1);
let currentMonth=firstDay.getMonth();
let lastDay=new Date(firstDay.getFullYear(),currentMonth+1,0);
firstDay=firstDay.Format("yyyy/MM/dd");
lastDay=lastDay.Format("yyyy/MM/dd");
return [firstDay,lastDay];
}
function getWeekFirstLastDay(tYear,week) {
let tDate = new Date();
let tWeek = Number(week.match(/\d+/g));
let day = (function(){
tDate = new Date(((tWeek+1)*7+(tYear-1970)*365)*24*60*60*1000);
var day = tDate.getDay();
return (day==0)?7:day;
})();
let firstDay = new Date(tDate.getTime() - (day -1)*24*60*60*1000).Format("yyyy/MM/dd");
let lastDay = new Date(tDate.getTime() - (day -7)*24*60*60*1000).Format("yyyy/MM/dd");
return [firstDay,lastDay]
}
let [firstMonthDay,lastMonthDay] = getMonthFirstLastDay('2020/03月')
console.log(firstMonthDay,lastMonthDay)
let [firstWeekDay,lastWeekDay] = getWeekFirstLastDay(2020,'W18')
console.log(firstWeekDay,lastWeekDay)