js 获取 本周、上周、本月、上月、本季度、上季度的开始结束日期
/**
* 获取本周、本季度、本月、上月的开始日期、结束日期
*/
var now = new Date(); //当前日期
var nowDayOfWeek = now.getDay(); //今天本周的第几天
var nowDay = now.getDate(); //当前日
var nowMonth = now.getMonth(); //当前月
var nowYear = now.getYear(); //当前年
nowYear += (nowYear < 2000) ? 1900 : 0; //
var lastMonthDate = new Date(); //上月日期
lastMonthDate.setDate(1);
lastMonthDate.setMonth(lastMonthDate.getMonth() - 1);
var lastYear = lastMonthDate.getYear();
var lastMonth = lastMonthDate.getMonth();
//格式化日期:yyyy-MM-dd
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);
}
//获得某月的天数
function getMonthDays(myMonth) {

var monthStartDate = new Date(nowYear, myMonth, 1);

var monthEndDate = new Date(nowYear, myMonth + 1, 1);

var days = (monthEndDate - monthStartDate) / (1000 * 60 * 60 * 24);

return days;
}
//获得本季度的开始月份
function getQuarterStartMonth() {

var quarterStartMonth = 0;

if (nowMonth < 3) {

quarterStartMonth = 0;

}

if (2 < nowMonth && nowMonth < 6) {

quarterStartMonth = 3;

}

if (5 < nowMonth && nowMonth < 9) {

quarterStartMonth = 6;

}

if (nowMonth > 8) {

quarterStartMonth = 9;

}

return quarterStartMonth;
}
//获得本周的开始日期
function getWeekStartDate() {

var weekStartDate = new Date(nowYear, nowMonth, nowDay - nowDayOfWeek);

return formatDate(weekStartDate);
}
//获得本周的结束日期
function getWeekEndDate() {

var weekEndDate = new Date(nowYear, nowMonth, nowDay + (6 - nowDayOfWeek));

return formatDate(weekEndDate);
}
//获得上周的开始日期
function getLastWeekStartDate() {

var weekStartDate = new Date(nowYear, nowMonth, nowDay - nowDayOfWeek - 7);

return formatDate(weekStartDate);
}
//获得上周的结束日期
function getLastWeekEndDate() {

var weekEndDate = new Date(nowYear, nowMonth, nowDay - nowDayOfWeek - 1);

return formatDate(weekEndDate);
}
//获得本月的开始日期
function getMonthStartDate() {

var monthStartDate = new Date(nowYear, nowMonth, 1);

return formatDate(monthStartDate);
}
//获得本月的结束日期
function getMonthEndDate() {

var monthEndDate = new Date(nowYear, nowMonth, getMonthDays(nowMonth));

return formatDate(monthEndDate);
}
//获得上月开始时间
function getLastMonthStartDate() {

var lastMonthStartDate = new Date(nowYear, lastMonth, 1);

return formatDate(lastMonthStartDate);
}
//获得上月结束时间
function getLastMonthEndDate() {

var lastMonthEndDate = new Date(nowYear, lastMonth, getMonthDays(lastMonth));

return formatDate(lastMonthEndDate);
}
//获得本季度的开始日期
function getQuarterStartDate() {

var quarterStartDate = new Date(nowYear, getQuarterStartMonth(), 1);

return formatDate(quarterStartDate);
}
//或的本季度的结束日期
function getQuarterEndDate() {

var quarterEndMonth = getQuarterStartMonth() + 2;

var quarterStartDate = new Date(nowYear, quarterEndMonth,

getMonthDays(quarterEndMonth));

return formatDate(quarterStartDate);
}
/**
* 获取本周、本季度、本月、上月的开始日期、结束日期
*/
var now = new Date(); //当前日期
var nowDayOfWeek = now.getDay(); //今天本周的第几天
var nowDay = now.getDate(); //当前日
var nowMonth = now.getMonth(); //当前月
var nowYear = now.getYear(); //当前年
nowYear += (nowYear < 2000) ? 1900 : 0; //
var lastMonthDate = new Date(); //上月日期
lastMonthDate.setDate(1);
lastMonthDate.setMonth(lastMonthDate.getMonth() - 1);
var lastYear = lastMonthDate.getYear();
var lastMonth = lastMonthDate.getMonth();
//格式化日期:yyyy-MM-dd
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);
}
//获得某月的天数
function getMonthDays(myMonth) {

var monthStartDate = new Date(nowYear, myMonth, 1);

var monthEndDate = new Date(nowYear, myMonth + 1, 1);

var days = (monthEndDate - monthStartDate) / (1000 * 60 * 60 * 24);

return days;
}
//获得本季度的开始月份
function getQuarterStartMonth() {

var quarterStartMonth = 0;

if (nowMonth < 3) {

quarterStartMonth = 0;

}

if (2 < nowMonth && nowMonth < 6) {

quarterStartMonth = 3;

}

if (5 < nowMonth && nowMonth < 9) {

quarterStartMonth = 6;

}

if (nowMonth > 8) {

quarterStartMonth = 9;

}

return quarterStartMonth;
}
//获得本周的开始日期
function getWeekStartDate() {

var weekStartDate = new Date(nowYear, nowMonth, nowDay - nowDayOfWeek);

return formatDate(weekStartDate);
}
//获得本周的结束日期
function getWeekEndDate() {

var weekEndDate = new Date(nowYear, nowMonth, nowDay + (6 - nowDayOfWeek));

return formatDate(weekEndDate);
}
//获得上周的开始日期
function getLastWeekStartDate() {

var weekStartDate = new Date(nowYear, nowMonth, nowDay - nowDayOfWeek - 7);

return formatDate(weekStartDate);
}
//获得上周的结束日期
function getLastWeekEndDate() {

var weekEndDate = new Date(nowYear, nowMonth, nowDay - nowDayOfWeek - 1);

return formatDate(weekEndDate);
}
//获得本月的开始日期
function getMonthStartDate() {

var monthStartDate = new Date(nowYear, nowMonth, 1);

return formatDate(monthStartDate);
}
//获得本月的结束日期
function getMonthEndDate() {

var monthEndDate = new Date(nowYear, nowMonth, getMonthDays(nowMonth));

return formatDate(monthEndDate);
}
//获得上月开始时间
function getLastMonthStartDate() {

var lastMonthStartDate = new Date(nowYear, lastMonth, 1);

return formatDate(lastMonthStartDate);
}
//获得上月结束时间
function getLastMonthEndDate() {

var lastMonthEndDate = new Date(nowYear, lastMonth, getMonthDays(lastMonth));

return formatDate(lastMonthEndDate);
}
//获得本季度的开始日期
function getQuarterStartDate() {

var quarterStartDate = new Date(nowYear, getQuarterStartMonth(), 1);

return formatDate(quarterStartDate);
}
//或的本季度的结束日期
function getQuarterEndDate() {

var quarterEndMonth = getQuarterStartMonth() + 2;

var quarterStartDate = new Date(nowYear, quarterEndMonth,

getMonthDays(quarterEndMonth));

return formatDate(quarterStartDate);
}js 计算月/周的第一天和最后一天js 计算月/周的第一天和最后一天因为项目开发中遇到需要向后台传本周的开始和结束时间,以及上一周的起止时间,就琢磨了半天,总算写出来一套,写篇文章是为了方便自己记忆,也是分享给需要的人,水平有限,写的不好请见谅:getDateStr3函数是为了把时间对象转变为yy-mm-dd的字符串,方便传值;getWeekStartAndEnd函数是获取周的起止时间,并且用getDateStr3转换成字符串放到数组中,其中参数0代表当前周,-1代表前一周,-2代表上上周,以此类推,反过来也可以1代表下一周;getMonthStartAndEnd函数是获取月的起止时间,传参同上
//获取当前日期yy-mm-dd
//date 为时间对象
function getDateStr3(date) {

var year = "";

var month = "";

var day = "";

var now = date;

year = ""+now.getFullYear();

if((now.getMonth()+1)<10){

month = "0"+(now.getMonth()+1);

}else{

month = ""+(now.getMonth()+1);

}

if((now.getDate())<10){

day = "0"+(now.getDate());

}else{

day = ""+(now.getDate());

}

return year+"-"+month+"-"+day;
}
/**
* 获得相对当前周AddWeekCount个周的起止日期
* AddWeekCount为0代表当前周
为-1代表上一个周
为1代表下一个周以此类推
* **/
function getWeekStartAndEnd(AddWeekCount) {

//起止日期数组


var startStop = new Array();

//一天的毫秒数


var millisecond = 1000 * 60 * 60 * 24;

//获取当前时间


var currentDate = new Date();

//相对于当前日期AddWeekCount个周的日期

currentDate = new Date(currentDate.getTime() + (millisecond * 7*AddWeekCount));

//返回date是一周中的某一天

var week = currentDate.getDay();

//返回date是一个月中的某一天


var month = currentDate.getDate();

//减去的天数


var minusDay = week != 0 ? week - 1 : 6;

//获得当前周的第一天


var currentWeekFirstDay = new Date(currentDate.getTime() - (millisecond * minusDay));

//获得当前周的最后一天

var currentWeekLastDay = new Date(currentWeekFirstDay.getTime() + (millisecond * 6));

//添加至数组


startStop.push(getDateStr3(currentWeekFirstDay));

startStop.push(getDateStr3(currentWeekLastDay));



return startStop;
}
/**
* 获得相对当月AddMonthCount个月的起止日期
* AddMonthCount为0 代表当月 为-1代表上一个月 为1代表下一个月 以此类推
* ***/
function getMonthStartAndEnd(AddMonthCount) {

//起止日期数组


var startStop = new Array();

//获取当前时间


var currentDate = new Date();

var month=currentDate.getMonth()+AddMonthCount;

if(month<0){

var n = parseInt((-month)/12);

month += n*12;

currentDate.setFullYear(currentDate.getFullYear()-n);

}

currentDate = new Date(currentDate.setMonth(month));

//获得当前月份0-11


var currentMonth = currentDate.getMonth();

//获得当前年份4位年


var currentYear = currentDate.getFullYear();

//获得上一个月的第一天


var currentMonthFirstDay = new Date(currentYear, currentMonth,1);

//获得上一月的最后一天


var currentMonthLastDay = new Date(currentYear, currentMonth+1, 0);

//添加至数组


startStop.push(getDateStr3(currentMonthFirstDay));

startStop.push(getDateStr3(currentMonthLastDay));

//返回


return startStop;
}
//获取当前日期yy-mm-dd
//date 为时间对象
function getDateStr3(date) {

var year = "";

var month = "";

var day = "";

var now = date;

year = ""+now.getFullYear();

if((now.getMonth()+1)<10){

month = "0"+(now.getMonth()+1);

}else{

month = ""+(now.getMonth()+1);

}

if((now.getDate())<10){

day = "0"+(now.getDate());

}else{

day = ""+(now.getDate());

}

return year+"-"+month+"-"+day;
}
/**
* 获得相对当前周AddWeekCount个周的起止日期
* AddWeekCount为0代表当前周
为-1代表上一个周
为1代表下一个周以此类推
* **/
function getWeekStartAndEnd(AddWeekCount) {

//起止日期数组


var startStop = new Array();

//一天的毫秒数


var millisecond = 1000 * 60 * 60 * 24;

//获取当前时间


var currentDate = new Date();

//相对于当前日期AddWeekCount个周的日期

currentDate = new Date(currentDate.getTime() + (millisecond * 7*AddWeekCount));

//返回date是一周中的某一天

var week = currentDate.getDay();

//返回date是一个月中的某一天


var month = currentDate.getDate();

//减去的天数


var minusDay = week != 0 ? week - 1 : 6;

//获得当前周的第一天


var currentWeekFirstDay = new Date(currentDate.getTime() - (millisecond * minusDay));

//获得当前周的最后一天

var currentWeekLastDay = new Date(currentWeekFirstDay.getTime() + (millisecond * 6));

//添加至数组


startStop.push(getDateStr3(currentWeekFirstDay));

startStop.push(getDateStr3(currentWeekLastDay));



return startStop;
}
/**
* 获得相对当月AddMonthCount个月的起止日期
* AddMonthCount为0 代表当月 为-1代表上一个月 为1代表下一个月 以此类推
* ***/
function getMonthStartAndEnd(AddMonthCount) {

//起止日期数组


var startStop = new Array();

//获取当前时间


var currentDate = new Date();

var month=currentDate.getMonth()+AddMonthCount;

if(month<0){

var n = parseInt((-month)/12);

month += n*12;

currentDate.setFullYear(currentDate.getFullYear()-n);

}

currentDate = new Date(currentDate.setMonth(month));

//获得当前月份0-11


var currentMonth = currentDate.getMonth();

//获得当前年份4位年


var currentYear = currentDate.getFullYear();

//获得上一个月的第一天


var currentMonthFirstDay = new Date(currentYear, currentMonth,1);

//获得上一月的最后一天


var currentMonthLastDay = new Date(currentYear, currentMonth+1, 0);

//添加至数组


startStop.push(getDateStr3(currentMonthFirstDay));

startStop.push(getDateStr3(currentMonthLastDay));

//返回


return startStop;
}好了这篇文章就介绍到这了