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小时
   <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
    },
 


  
  }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 专业考题类型管理运行工作负责人一般作业考题内容选项A选项B选项C选项D选项E选项F正确答案 变电单选GYSZ本规程...
    小白兔去钓鱼阅读 9,070评论 0 13
  • alone 是一个很难打的boss,而他会爆什么装备,也不可全然预料。 一个人抱着手机,看着刚买的考试专用书...
    是糖浆呀阅读 234评论 0 0
  • 文 | 苗姑娘 我不是个优秀的女生,也不是众多亲友们眼中的平凡姑娘。 21岁大学毕业,22岁离开老家一个人在上海流...
    苗凡一阅读 2,287评论 19 29
  • 七 月 炉 火 入 桥 乡, 哪 知 反 念 图 清 凉, 幽 风 唤 来 彬 ...
    荣警阅读 213评论 0 1
  • 审视我们的目标,预期希望达成的时限。我们希望何时达成呢?有实现期限的才能叫目标,没有时限的只能叫梦想。梦想要成真,...
    合一成长导师阅读 348评论 0 0