js 获取本周、上周、本月、上月、本季度、上季度的开始结束日期

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);

}

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;

}

好了这篇文章就介绍到这了

以上是 js 获取本周、上周、本月、上月、本季度、上季度的开始结束日期 的全部内容, 来源链接: utcz.com/z/332395.html

回到顶部