美文网首页
api的应用及antdesign上时间日期插件 选择时间时固定时

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

作者: 兰夏天 | 来源:发表于2019-12-13 17:19 被阅读0次
    /* 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小时
       <a-col
              class="widthtime"
              :sm="24"
              :md="12"
              :lg="8"
              :lx="8"
              v-if="'starttime' in queryCondition">
              <a-form-item label="开始时间">
                <a-date-picker
                  v-model="efmobj.starttime"
                  showTime
                  :showToday="false"
                  format="YYYY-MM-DD HH:mm:ss"
                  placeholder="开始时间"
                  @ok="starttimechange"
                />
              </a-form-item>
            </a-col>
            <a-col
              class="widthtime"
              :sm="24"
              :md="12"
              :lg="8"
              :lx="8"
              v-if="'endtime' in queryCondition">
              <a-form-item label="结束时间" style="widht:100%;">
                <a-date-picker
                  v-model=" efmobj.endtime"
                  showTime
                  :showToday="false"
                  format="YYYY-MM-DD HH:mm:ss"
                  @ok="endtimechange"
                  placeholder="结束时间"
                />
              </a-form-item>
    
    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上时间日期插件 选择时间时固定时

          本文链接:https://www.haomeiwen.com/subject/yzzfnctx.html