这篇主要是项目中要做获取本月的日期,并将本月分成周,并显示出来周的周一到周日的日期
1,先获取要分解的某年月日的日期(随便某个月的某一天都行),将他拆分成年 ,月 ,日。date是参数。
//将日期拆分年月日
function splitDate(date){
var newdate = date.split("-");
var year = newdate[0];
var month = newdate[1];
var day = newdate[2];
return {year:year,month:month,day:day}
}
2,再将拆分的年月日放在这个方法中,获取本月有几周。
/**
* 获取本月有几周 将拆分的年月日放在这个方法参数中,返回本月有几周
* var dates = splitDate(begintime);
* dates.year, dates.month, dates.day将拆分的年月日放再里面,获取的key
* @returns
*/
function getWeeks(year, month, day) {
const d = new Date()
// 该月第一天
d.setFullYear(2018, 6, 1)
let w1 = d.getDay()
if (w1 === 0) {
w1 = 7
}
// 该月天数
d.setFullYear(2018, 7, 0)
const dd = d.getDate()
// 该月第一个周一
let d1
if (w1 !== 1) {
d1 = 7 - w1 + 2
} else {
d1 = 1
}
const WEEK_NUB = Math.ceil((dd - d1 + 1) / 7)
return WEEK_NUB
}
3,再将获取年月放在次方法中,w表示第几周,将拆分的年,月放在y,m中
//获取每周的周一,周末,w表示第几周,将获得本月有几周进行循环,将拆分的年,月放在y,m中
function getInfo_days(y, m, w) {
var dObj = new Date(),
day, start, end,
oneDay = 24 * 3600 * 1000;
dObj.setYear(+y);
dObj.setMonth(m - 1);
dObj.setDate(1);
day = dObj.getDay();
start = dObj.getTime() + (w - 1) * 7 * oneDay - (day - 1) * oneDay;
end = start + 6 * oneDay;
// console.log(new Date(start));
start = new Date(start);
start = start.getFullYear() + '/' + fillZero(start.getMonth() + 1) + '/' + fillZero(start.getDate());
end = new Date(end);
end = end.getFullYear() + '/' + fillZero(end.getMonth() + 1) + '/' + fillZero(end.getDate());
return {start: start, end: end};
}
function fillZero(num) {
return num < 10 ? '0' + num : num;
}
4,js代码示例
/**
* 将getInfo_days()方法中的参数放入相应的数据,w填写循环次数就行
* @returns
*/
function getInfo_2(){
var dates = splitDate(begintime);
var days = getWeeks(dates.year, dates.month, dates.day);//获取本月几周
for(var i = 0; i< days; i++){
var obj = getInfo_days(dates.year, dates.month, i+1);//获取每周日期
$(" <div class='d-0'>"+
" <div class='spacing1'><div class='deletegoal' onclick='emptyGoal(this)'>
清空</div></div>"+
" <div class='d-1'>"+
" <div class='d-1-0'>"+
" <div class='d-1-1'>"+
" "+obj.start+" "+ //开始时间
" </div>"+
" <div class='d-1-2'>"+
" "+obj.end+" "+ //结束时间
" </div>"+
" </div>"+
" <div class='d-1-3' onclick=jumpPage_2(this) tarId='12546'>"+
" 第"+"一,二,三,四,五".split(",")[i]+"周"+
" </div>"+
" </div>"+
" <div class='d-2'>"+
" <input class='tar_input' "+str_d+" type='text' onblur='editExe_perfrom(this)'>"+
" </div>"+
" <div class='d-3'>"+
" <input class='in_input f2' onclick=inteChange(this,2) onblur=inteChange(this,1) type='tel'>"+
" </div>"+
"</div>").appendTo($(".m-main"))
}
}
展现效果如下