最近做了一个给销售设置目标的一个功能,需要有月目标以及月目标对应的周目标,开始从网上找了几个demo 发现计算的都有问题, 还是自己思考一下,写了一个。大家没事可以看看,欢迎大牛交流更简单的方法
function getweekdata(year, month) { //传入 年 月 获取当月有几周 以及日期
var new_year = year; //取当前的年份
var new_month = month++;//取下一个月的第一天,方便计算(最后一天不固定)
var weekDay = ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期天"];
if (month > 12) {
new_month -= 12; //月份减
new_year++; //年份增
}
var first_date = new Date(new_year, new_month, 1); //取当年当月中的第一天-时间格式
var last_Data = (new Date(first_date.getTime() - 1000 * 60 * 60 * 24)).getDate() //获取当月最后一天日期
//console.log('最后一天日期'+last_Data+'号')
//当月第一天是周几
var firstzhouji = new Date(new_year + '/' + new_month + '/' + 1).getDay() == 0 ? '星期天' : weekDay[new Date(new_year + '/' + new_month + '/' + 1).getDay() - 1]
//当月最后一天是周几
var lastzhouji = new Date(new_year + '/' + new_month + '/' + last_Data).getDay() == 0 ? '星期天' : weekDay[new Date(new_year + '/' + new_month + '/' + last_Data).getDay() - 1]
var firsttime = '' //第一周有几天
if (firstzhouji == '星期一') { firsttime = 7 }
if (firstzhouji == '星期二') { firsttime = 6 }
if (firstzhouji == '星期三') { firsttime = 5 }
if (firstzhouji == '星期四') { firsttime = 4 }
if (firstzhouji == '星期五') { firsttime = 3 }
if (firstzhouji == '星期六') { firsttime = 2 }
if (firstzhouji == '星期天') { firsttime = 1 }
//console.log('本月第一天“'+firstzhouji+'”本月第一周有“'+firsttime+'”天')
var lasttime = '' //最后一周有几天
if (lastzhouji == '星期一') { lasttime = 1 }
if (lastzhouji == '星期二') { lasttime = 2 }
if (lastzhouji == '星期三') { lasttime = 3 }
if (lastzhouji == '星期四') { lasttime = 4 }
if (lastzhouji == '星期五') { lasttime = 5 }
if (lastzhouji == '星期六') { lasttime = 6 }
if (lastzhouji == '星期天') { lasttime = 7 }
// console.log('本月最后一天“'+lastzhouji+'”本月最后一周有“'+lasttime+'”天')
// 前后两周 加上 剩余周数 得出总周数
var contime = 2 + (last_Data - lasttime - firsttime) / 7
//得出每周对应的日期
var zhouArry = []
for (var i = 1; i <= contime; i++) {
var strTime = ''
var lastTime = ''
if (i == 1) {
strTime = year + '-' + new_month + '-' + 1
lastTime = year + '-' + new_month + '-' + (1 + firsttime - 1)
} else if (i == contime) {
strTime = year + '-' + new_month + '-' + (last_Data - lasttime + 1)
lastTime = year + '-' + new_month + '-' + last_Data
} else {
strTime = addDate(zhouArry[zhouArry.length - 1].endtime, 1)
lastTime = addDate(zhouArry[zhouArry.length - 1].endtime, 7)
}
zhouArry.push({
weeknum: i,
begintime: strTime,
endtime: lastTime,
})
//日期增加 接受两个参数, 传入的时间,传入时间增加的天数
function addDate(date, days) {
if (days == undefined || days == '') {
days = 1;
}
var date = new Date(date);
date.setDate(date.getDate() + days);
var month = date.getMonth() + 1;
var day = date.getDate();
return date.getFullYear() + '-' + month + '-' + day;
}
//console.log(zhouArry)//打印数据
}
return zhouArry
}
getweekdata(2019,8)