src/utils/time.js
@@ -1,19 +1,146 @@
/* 时间函数 */
import dayjs from 'dayjs'
import lineChart from '@/utils/chartFunction/lineChart.js'
export default {
  // 判断已选的月份是否大于当前月份
  judgeDateValid(date) {
    // 获得当月月份
    let currentMonth = dayjs()
    let selectMonth = date.getTime()
    // 选择大于现在月份
    if (selectMonth > currentMonth) {
      return true
    }
        // 判断已选的月份是否大于当前月份
        judgeDateValid(date){
          // 获得当月月份
          let currentMonth = dayjs()
          let selectMonth = date.getTime()
          // 选择大于现在月份
          if(selectMonth > currentMonth){
            return true
          }
    return false
  },
          return false
        }
  /**
   * 判断两个日期是否相差指定的分钟数
   * @param:
   * @returns:
   */
  isTimeOverFifty(time1, time2, minutes = 15) {
    let t1 = dayjs(time1)
    let t2 = dayjs(time2)
}
    let timeDifferce = Math.abs(t1.diff(t2, 'minute'))
    if (timeDifferce <= minutes) {
      return false
    }
    return true
  },
  /**
   * 根据指定的分钟间隔,划分起始时间
   * @param:开始时间 结束时间 间隔分钟数
   * @returns:
   */
  ascTime(beginTime, endTime, intervalMinute = 15) {
    if (beginTime >= endTime) {
      return []
    }
    let time = []
    time.push(beginTime)
    let bt = dayjs(beginTime).add(intervalMinute, 'minute')
    let et = dayjs(endTime)
    while (bt < et) {
      time.push(bt.format('YYYY-MM-DD HH:mm:ss'))
      bt = dayjs(bt).add(intervalMinute, 'minute')
    }
    return time
  },
  /**
   * 返回flag不等于N的时间点和数据缺失的时间点
   * @param:扬尘数据,升序的时间字符串数组(接口中返回的已经是升序)
   * @returns:升序的时间点
   */
  invalidTime(dustData, timeArr) {
    // 参数为空则退出
    if (!dustData.length || !timeArr.length) {
      return []
    }
    let time = []
    timeArr.forEach((item) => {
      let r = lineChart.findDate(dustData, item)
      // 没有找到对应时间的数据
      if (r == false) {
        // 将该时间加入数组
        time.push(item)
      }
      // 找到对应时间的数据,并且该数据标识不等与‘N’
      if (r && r.flag != 'N') {
        // 将该数据的采集时间加入数组
        time.push(r.lst)
      }
    })
    return time
  },
  /**
   * 取指定间隔的时间为连续时间,放在数组中。 孤立的时间点与自身算一个连续
   * 目的是构造有效率缺失的颜色背景区间
   * @param:时间字符串数组
   * @returns:[ ['2023-11-02 00:00:00','2023-11-02 00:15:00','2023-11-02 00:30:00']]
   */
  seriesTime(timeArr, intervalMinute = 15) {
    let temp = []
    let temp_1 = []
    for (let i = 0; i < timeArr.length; i++) {
      // 当前时间
      let currentTime = timeArr[i]
      if (i === 0) {
        temp_1.push(currentTime)
        continue
      }
      // 前一个
      let pre = timeArr[i - 1]
      // 超过15分钟
      if (this.isTimeOverFifty(pre, currentTime, intervalMinute)) {
        // 列表为连续时长为自身
        temp.push(temp_1)
        temp_1 = [currentTime]
      }
      // 不超过15分钟
      else {
        temp_1.push(currentTime)
      }
    }
    if (temp_1.length > 0) {
      temp.push(temp_1)
    }
    // 整理数据
    let temp_2 = []
    for (let i = 0; i < temp.length; i++) {
      if (temp[i].length == 1) {
        temp_2.push([temp[i][0], temp[i][0]])
      } else if (temp[i].length > 1) {
        temp_2.push([temp[i][0], temp[i][temp[i].length - 1]])
      }
    }
    return temp_2
  },
  splitTime(timeArr) {
    let result = []
    for (let i = 0; i < timeArr.length; i++) {
      let temp = []
      for (let j = 0; j < timeArr[i].length; j++) {
        temp.push(timeArr[i][j].slice(11, -3))
      }
      result.push(temp)
    }
    return result
  }
}