下面的算法中 周是从周日开始的 需要修正
/** * 统计报表中 * 计算本周第一天 * @returns {String} */ getweekstart = function(date){ var dateD = new Date(); dateD = str2date(date); var myyear = dateD.getFullYear(); var mymonth = dateD.getMonth(); var myday = dateD.getDate(); var nowDayOfWeek = dateD.getDay(); if(0==nowDayOfWeek){ nowDayOfWeek = 7; } var weekStartDate = new Date(myyear, mymonth, myday - nowDayOfWeek+1); var weekStart = weekStartDate.Format("yyyy-MM-dd"); return weekStart; }; /** * 统计报表中 * 计算本周最后一天 * @returns {String} */ getweekend = function(date){ var dateD = new Date(); dateD = str2date(date); var myyear = dateD.getFullYear(); var mymonth = dateD.getMonth(); var myday = dateD.getDate(); var nowDayOfWeek = dateD.getDay(); if(0==nowDayOfWeek){ nowDayOfWeek = 7; } var weekEndDate = new Date(myyear, mymonth, myday + (6 - nowDayOfWeek+1)); var weekEnd = weekEndDate.Format("yyyy-MM-dd"); return weekEnd; }; /** * 获取本周、本季度、本月、上月的开始日期、结束日期 */ 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 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); }