源生js,给出起止日期之后的判断问题?

拿到一个星期时段,固定为7天,且固定为周一到周日。
假设开始时间为:2017-11-27 ,结束时间为:2017-12-03,这一周是跨月的。
若在本月(也就是12月份)的这几天转换成星期几,然后文字加粗或变色特殊显示,让上个月(也就是11月份)的日期也转换成星期几,字体颜色变灰显示。
如何操作?越详细越好
试了一下,每当拿到的这个星期跨月的时候就出错。
求高人指点。。。
本人小白,问题可能过于简单、弱智。还望大家夺包涵,别嫌弃。

阅读 2.6k
3 个回答

getDay可以获取周几的。

new Date('2017-11-27').getDay(); // 1.周一 (返回0~6,也就是周日开始到周六); 

至于是不是本月可以判断嘛

var isCurrMonth = new Date().getMonth() === new Date('2017-XX-XX').getMonth();

这个 isCurrMonth就是判断结果

假如拿到结束时间,则开始日期计算为结束日期减7,如果结果大于0,则开始日期就是结束日期 + 1 - 7,也可以确定是同一个月,如果结果小于等于0,如结束12-03结果为-4,则判断上个月天数,最终开始日期为上月(30)30 + 1 - 4 27号,然后拿到这几个日期比较,大于结束日期的都为上个月的,小于结束日期的为这个月的。如果开始结束日期都知道那更简单了,这7天里比结束日期大的都是上个月,小的是这个月。

直接上代码,demo链接描述

let dateStart = new Date("2017-11-27");
let dateNow = new Date();
let year = dateNow.getFullYear();
let month = dateNow.getMonth();

let week = ['日', '一', '二', '三', '四', '五', '六']
for (let i = 0; i < 7; i++) {
  let tmpYear = dateStart.getFullYear();
  let tmpMonth = dateStart.getMonth();
  
  // 判断日期是否在当前月份
  let currentMon = (tmpYear === year && tmpMonth === month);


  let dom = document.createElement('span');
  dom.className = currentMon ? 'currentMon' : 'otherMon';
  dom.innerHTML = week[dateStart.getDay()];
  document.body.appendChild(dom);
  
  // 日期加一天
  dateStart.setDate(dateStart.getDate() + 1);
}
span {
  padding: 8px 16px;
}

.currentMon {
  color: blue;
  font-weight: bold;
}

.otherMon {
  color: gray;
}
推荐问题