api的应用及antdesign上时间日期插件 选择时间时固定时间范围

/* eslint-disable no-unused-vars */
import moment from 'moment'
/**
 *
 * 一下得到的是时间对象
 *
 **/
moment().startOf('day')// 当天的开始00:00:00
moment('2019-12-11')// 2019-12-11 00:00:00
moment('2019-12-11 1:12:12') // 2019-12-11 1:12:12 这一天的此时此分
moment('2019-12-11 1:12:12').startOf('day') // 2019-12-11这一天的凌晨
moment('2019-12-11 1:12:12').add(1, 'days') //  2019-12-12 1:12:12' 即 (2019-12-11 1:12:12的后一天的此刻)
moment('2019-12-11 1:12:12').startOf('day').add(1, 'days')//  2019-12-12 00:00:00  即(2019-12-11 1:12:12的后一天的凌晨)
moment('2019-12-11 1:12:12').endOf('day') // 2019-12-11 23:59:59 即 2019-12-11 这一天的结束时刻
moment('2019-12-11 1:12:12').add(1, 'days').endOf('day') /// / 2019-12-12 23:59:59 即 2019-12-11 这一天的后一天的结束时刻

moment().subtract(7, 'days') // 七天前
moment().subtract(7, 'days').format('YYYY-MM-DD hh:mm:ss') // 得到7天前的年月日时分秒
moment().subtract(7, 'days').format('YYYY') // 得到7天前的年
moment().subtract(7, 'days').format('MM') // 得到7天前的月
moment().subtract(7, 'days').format('DD') // 得到7天前的日
/**
 * 取得格式化时为00:00:00 是有问题的。
 */
// moment().subtract(7, 'days').format('hh') // 得到7天前的年某时的时

moment().subtract(7, 'days').format('mm') // 得到7天前的某时某分的分
moment().subtract(7, 'days').format('ss') // 得到7天前的某时某刻的秒数

moment().add(1, 'month')// 下一个月的今天
moment().add(1, 'month').format('YYYY-MM-DD hh:mm:ss')
/**
 * 得到指定日期的毫秒数
 */
// Date.UTC(year, month, day, hours, minutes, seconds, ms)

var hhh = moment('2019-2-1 1:12:12').add(7, 'days').endOf('day')
console.log(hhh._d.getTime())

// Data 时间日期函数
console.log(Date.UTC(2005, 7, 9))// 得到指定日期 的毫秒数

/**
 * starttimechange  点击开始时间的确定按钮的函数
 * @param {*} datobj 点击时间插件后选择时间,返回的时间对象
 * that.efmobj.endtime 时间插件双向绑定结束时间
 * this.showtime  值默认情况 默认时间时一天的开始到结束;值 hour:默认时间当前的小时数到当前小时数加1
 */

function starttimechange (datobj) {
  let that = this
  let objtime = datobj.clone()
  let startSubend = that.convertmilliseconds(datobj) - that.convertmilliseconds(that.efmobj.endtime)
  // console.log(startSubend, '======开始减去结束时间的毫秒差值')
  switch (this.showtime) {
    case 'hour':
      if ((startSubend > 0) || (startSubend < (-3600000))) that.efmobj.endtime = objtime.add(1, 'hour')
      break
    default:
      switch (true) {
        case startSubend >= 0:
          that.efmobj.endtime = objtime.endOf('day')
          break
        case startSubend < (-604800000):// 7*24*60*60*1000
          that.efmobj.endtime = objtime.add(6, 'day').endOf('day')
          break
      }
  }
}
/**
 * endtimechange  点击开始时间的确定按钮的函数
 * @param {*} datobj 点击时间插件后选择时间,返回的时间对象
 * that.efmobj.starttime  时间插件双向绑定开始时间
 * this.showtime  值默认情况 默认时间时一天的开始到结束;值 hour:默认时间当前的小时数到当前小时数加1
 */
function endtimechange (datobj) {
  let that = this
  let objtime = datobj.clone()
  let startSubend = that.convertmilliseconds(datobj) - that.convertmilliseconds(that.efmobj.starttime)
  switch (this.showtime) {
    case 'hour':
      if ((startSubend < 0) || (startSubend > 3600000)) that.efmobj.starttime = objtime.subtract(1, 'hour')
      break
    default:
      switch (true) {
        case startSubend < 0:
          that.efmobj.starttime = objtime.startOf('day')
          break
        case startSubend > 604800000:// 7*24*60*60*1000
          that.efmobj.starttime = objtime.subtract(6, 'day').startOf('day')
          break
      }
  }
}
/**
 * convertmilliseconds 计算时间差
 * @param {*} timestr 时间对象
 * Date.UTC() 转时间戳的函数
 */
function convertmilliseconds (timestr) {
  // console.log(timestr.format())
  let datastr = timestr.format()
  let YYYY = datastr.slice(0, 4)
  let MM = datastr.slice(5, 7)
  let DD = datastr.slice(8, 10)
  let hh = datastr.slice(11, 13)
  let mm = datastr.slice(14, 16)
  let ss = datastr.slice(17, 19)
  let millisenconds = Date.UTC(YYYY, MM, DD, hh, mm, ss)
  // console.log(millisenconds, '======', YYYY, MM, DD, hh, mm, ss)
  return millisenconds
}

例子 比较时用时间戳

当点击开始日期时

  • 当是默认时间的时候 --时间跨度是7天
    起初赋值是当天的开始到当天的结束
    当开始大于结束时,结束=开始天23:59:59
    当开始小于结束且在7天内,默认不变
    当开始小于结束且大于7天 结束=开始+7天
  • 当默认事当前的 时钟 ---当前时钟+1 时间跨度1小时
    开始大于结束时,结束=开始+1小时
    开始小于结束且1小时内 结束=默认
    开始小于结束且大于1小时 结束=开始+1小时

当点击结束日期时

  • 当是默认时间的时候 --时间跨度是7天
    起初赋值是当天的开始到当天的结束
    当结束小于开始时, 开始=结束-1天
    当结束大于开始且在7天内, 开始=默认不变
    当结束大于开始且大于7天 开始=结束-7天
  • 当默认事当前的 时钟 ---当前时钟+1 时间跨度1小时
    结束小于开始时, 开始=结束-1小时
    结束大于开始且1小时内 开始=默认
    借宿大于开始且大于1小时 开始=开始-1小时
   
          
            
          
        
        
          
            
          
import moment from 'moment'
//.............
 data () {
    return {
      machineIDList: [],
      comform: {},
      dateFormat: 'YYYY/MM/DD hh:mm:ss',
      efmobj: {
        factoryname: null,
        linename: null,
        processname: null,
        equipmentname: null,
        endtime: moment().endOf('day'),
        starttime: moment().startOf('day')
      },
      factoryList: [],
      lineList: [],
      processList: [],
      equipmentList: [],
      pageobj: {
        pageIndex: 1,
        pageSize: null
      }
    }
  },
 methods: {

    starttimechange (datobj) {
      let that = this
      let objtime = datobj.clone()
      let startSubend = that.convertmilliseconds(datobj) - that.convertmilliseconds(that.efmobj.endtime)
      // console.log(startSubend, '======开始减去结束时间的毫秒差值')
      switch (this.showtime) {
        case 'hour':
          if ((startSubend > 0) || (startSubend < (-3600000))) that.efmobj.endtime = objtime.add(1, 'hour')
          break
        default:
          switch (true) {
            case startSubend >= 0:
              that.efmobj.endtime = objtime.endOf('day')
              break
            case startSubend < (-604800000):// 7*24*60*60*1000
              that.efmobj.endtime = objtime.add(6, 'day').endOf('day')
              break
          }
      }
    },
    endtimechange (datobj) {
      let that = this
      let objtime = datobj.clone()
      let startSubend = that.convertmilliseconds(datobj) - that.convertmilliseconds(that.efmobj.starttime)
      switch (this.showtime) {
        case 'hour':
          if ((startSubend < 0) || (startSubend > 3600000)) that.efmobj.starttime = objtime.subtract(1, 'hour')
          break
        default:
          switch (true) {
            case startSubend < 0:
              that.efmobj.starttime = objtime.startOf('day')
              break
            case startSubend > 604800000:// 7*24*60*60*1000
              that.efmobj.starttime = objtime.subtract(6, 'day').startOf('day')
              break
          }
      }
    },
    convertmilliseconds (timestr) {
      // console.log(timestr.format())
      let datastr = timestr.format()
      let YYYY = datastr.slice(0, 4)
      let MM = datastr.slice(5, 7)
      let DD = datastr.slice(8, 10)
      let hh = datastr.slice(11, 13)
      let mm = datastr.slice(14, 16)
      let ss = datastr.slice(17, 19)
      let millisenconds = Date.UTC(YYYY, MM, DD, hh, mm, ss)
      // console.log(millisenconds, '======', YYYY, MM, DD, hh, mm, ss)
      return millisenconds
    },
 


  
  }

你可能感兴趣的:(api的应用及antdesign上时间日期插件 选择时间时固定时间范围)