js判断某个时间段是否包含某个月份

现在有一些时间段:

['2017-9-1>2018-2-1','2018-3-1>2018-6-1']

怎么判断这些日期中时候包含某个月份,现在指定判断2个月份。

  1. 5月分:'2018-3-1>2018-6-1'这个时间段包含了5月份,返回'第一学期'
  2. 10月份:'2017-9-1>2018-2-1'这个时间段包含了10月份,返回'第二学期'

即是说 ,如果时间段包含月份就返回'第一学期',包含10月份就返回'第二学期',最后得到新的数组:

[{
    date_clamp:'2017-9-1>2018-2-1',
    term:'第二学期'
},{
    date_clamp:'2018-3-1>2018-6-1',
    term:'第一学期'
}]     
并且,如果当前时间所在的月份处于某个时间段中,就在当前对象给一个标志!
比如现在是`'2017-4-8'`
得到新的数组:
[{
    date_clamp:'2017-9-1>2018-2-1',
    term:'第二学期',
    isCurMonth:false
},{
    date_clamp:'2018-3-1>2018-6-1',
    term:'第一学期',
    isCurMonth:true
}] 
阅读 5.4k
3 个回答

根据计算日期时间戳对比大小来判断是否处于该区间,至于你新数组的isCurMonth代表何意义,可以根据当前日期做进一步处理。

var newArr = []
var originStr = ['2017-9-1>2018-2-1','2018-3-1>2018-6-1'];
originStr.map((v,i)=>{
  //获取起始月份
  var mBegin = parseInt(v.split(">")[0].split("-")[1]);
  //获取起始日期和终止日期的时间戳,用于后面比较大小
  var dateBegin = new Date(v.split(">")[0]).getTime();
  var dateOver = new Date(v.split(">")[1]).getTime();
  //如果起始月份大于5,那么计算10月份是否在该日期段
  if(mBegin>5){
    //获取起始年的10月份,并计算时间戳
    var date2Str = v.split(">")[0].split("-")[0]+"-10-"+v.split(">")[0].split("-")[2];
    var date2 = new Date(date2Str).getTime();
    if(date2>dateBegin && date2<dateOver){
      newArr.push({date_clamp:v,term:'第二学期'})
      console.log('第二学期',v)
    }
  }else{
    //如果起始月份小于5,那么计算5月份是否在该日期段
    //获取起始年的5月份,并计算时间戳
    var date2Str = v.split(">")[0].split("-")[0]+"-5-"+v.split(">")[0].split("-")[2];
    var date2 = new Date(date2Str).getTime();
    if(date2>dateBegin && date2<dateOver){
      newArr.push({date_clamp:v,term:'第一学期'})
      console.log('第一学期',v)
    }
  }
})
console.log(newArr);

clipboard.png

可以先根据'-9-'查找到数组的起始月份跟结束月份,然后再判断5月或者10月是不是在这个区间里面

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题