获取两个时间点之间的所有间隔时间

  • 说明 使用的是vue@2.6.12和elementUI@2.14.1
  • 使用的是TS,用来校验数据格式
  • 所有返回的数据都是在时间前面自动补全了0
  • 使用的主要方法是new Date().setFullYear()设置当前的时间,如果传入的时间是new Date().setFullYear(2020,12,32),该方法会自动将时间转化为2021-1-1的时间戳 **如果有一个参数超出了合理的范围,setFullYear 方法会更新其他参数值,日期对象的日期值也会被相应更新。 例如,为 monthValue指定 15, 则年份会加1,月份值会为3 ** MDN说明

获取两个时间之间的 间隔时间

/** 获取两个时间之间的 间隔时间
 * @param { Date | number | string } startTime 开始时间 字符串格式(6:00 06:00 18:00, 18:00:00) 必须是24小时格式
 * @param { Date | number | string } endTime 结束时间 字符串格式(6:00 06:00 18:00, 18:00:00) 必须是24小时格式
 */
export function getBetweenTime(startTime: string, endTime: string): Array<string> {
    // 校验时间格式
    if (typeof startTime === 'string' && typeof endTime === 'string') {
        const reg = /^(0?[1-9]|([1-2][0-4])):(([0-5][0-9])(:([0-9][0-9]))?)$/
        if (!reg.test(startTime)) throw `开始时间:${startTime} 时间格式错误`
        if (!reg.test(endTime)) throw `结束时间:${endTime} 时间格式错误`
    } else throw `${startTime} 或者 ${endTime} 时间格式错误`
    let start: number =  startTime.split(':')[0]
    let end: number =  endTime.split(':')[0]
    const resultTime: string[] = []
    // 当 开始时间小于结束时间的时候进入循环
    while (start <= end) {
        // 拼接时间格式 自动给 小于10的时间前面补0
        let setTime = start >= 10 ? `${start}:00` : `0${start}:00`
        resultTime.push(setTime)
        // 重新设置开始时间
        start  = 1
    }
    return resultTime
}

获取两个日期之间的间隔日期

/** 获取两个日期之间的间隔日期
 * @param { Date | number | string } startTime 开始时间 标准时间格式 时间戳格式 字符串格式(2008-08-08,2008-8-8,2008-08-8,2008-8-08)
 * @param { Date | number | string } endTime 结束时间 标准时间格式 时间戳格式 字符串格式(2008-08-08,2008-8-8,2008-08-8,2008-8-08)
 *  */
export function getBetweenDate(
    startTime: Date | number | string,
    endTime: Date | number | string
): Array<string> {
    // 校验时间格式
    if (typeof startTime === 'string') {
        const reg = /^\d{4}-(0?[1-9]|1[0-2])-((0?[1-9])|((1|2)[0-9])|30|31)$/g
        if (!reg.test(startTime)) throw `开始时间:${startTime}时间格式错误`
    }
    if (typeof endTime === 'string') {
        const reg = /^\d{4}-(0?[1-9]|1[0-2])-((0?[1-9])|((1|2)[0-9])|30|31)$/g
        if (!reg.test(endTime)) throw `结束时间:${endTime}时间格式错误`
    }
    let start: Date = new Date(startTime)
    let end: Date = new Date(endTime)
    const resultTime: string[] = []
    // 当 开始时间小于结束时间的时候进入循环
    while (start <= end) {
        let getDay = start.getDate()
        // 月份需要加 1
        let getMonth = start.getMonth()   1
        let getYear = start.getFullYear()
        /**
         * 拼接时间格式
         * (getMonth >= 10 ? `${getMonth}` : `0${getMonth}`) 自动给 小于10的时间前面补0
         */
        let setTime =
            `${getYear}-`  
            (getMonth >= 10 ? `${getMonth}` : `0${getMonth}`)  
            '-'  
            (getDay >= 10 ? `${getDay}` : `0${getDay}`)
        resultTime.push(setTime)
        /**
         * 重新设置开始时间
         * 使用 setFullYear() 方法会自动将时间累加,返回的是时间戳格式
         * 使用 new Date() 将时间重新设置为标准时间
         * getMonth - 1 将月份时间重新还原
         */
        start = new Date(start.setFullYear(getYear, getMonth - 1, getDay   1))
    }
    return resultTime
}

获取指定两个月份之间的 间隔月份

/**
 * 获取指定两个月份之间的 间隔月份
 * @param { Date | number | string } startTime 开始时间 标准时间格式 时间戳格式 字符串格式(2008-08,2008-8)
 * @param { Date | number | string } endTime 结束时间 标准时间格式 时间戳格式 字符串格式(2008-08,2008-8)
 */
export function getBetweenMonth(
    startTime: Date | number | string,
    endTime: Date | number | string
): Array<string> {
    // 校验时间格式
    if (typeof startTime === 'string') {
        const reg = /^\d{4}-(0?[1-9]|1[0-2])$/g
        if (!reg.test(startTime)) throw `开始时间:${startTime}时间格式错误`
    }
    if (typeof endTime === 'string') {
        const reg = /^\d{4}-(0?[1-9]|1[0-2])$/g
        if (!reg.test(endTime)) throw `结束时间:${endTime}时间格式错误`
    }
    let start: Date = new Date(startTime)
    let end: Date = new Date(endTime)
    const resultTime: string[] = []
    // 当 开始时间小于结束时间的时候进入循环
    while (start <= end) {
        // 月份需要加 1
        let getMonth = start.getMonth()   1
        let getYear = start.getFullYear()
        /**
         * 拼接时间格式
         * (getMonth >= 10 ? `${getMonth}` : `0${getMonth}`) 自动给 小于10的时间前面补0
         */
        let setTime = `${getYear}-`   (getMonth >= 10 ? `${getMonth}` : `0${getMonth}`)
        resultTime.push(setTime)
        /**
         * 重新设置开始时间
         * 使用 setFullYear() 方法会自动将时间累加,返回的是时间戳格式
         * 使用 new Date() 将时间重新设置为标准时间
         */
        start = new Date(start.setFullYear(getYear, getMonth))
    }
    return resultTime
}

获取两个年份时间点 之间的间隔年份

/** 获取两个年份时间点 之间的间隔年份
 * @param { Date | number | string } startTime 开始时间 标准时间格式 时间戳格式 字符串格式(2008)
 * @param { Date | number | string } endTime 结束时间 标准时间格式 时间戳格式 字符串格式(2008)
 */
export function getBetweenYear(
    startTime: Date | number | string,
    endTime: Date | number | string
): Array<string> {
    // 校验时间格式
    if (typeof startTime === 'string') {
        const reg = /^\d{4}$/g
        if (!reg.test(startTime)) throw `开始时间:${startTime}时间格式错误`
    }
    if (typeof endTime === 'string') {
        const reg = /^\d{4}$/g
        if (!reg.test(endTime)) throw `结束时间:${endTime}时间格式错误`
    }
    let start: Date = new Date(startTime)
    let end: Date = new Date(endTime)
    const resultTime: string[] = []
    // 当 开始时间小于结束时间的时候进入循环
    while (start <= end) {
        let getYear = start.getFullYear()
        // 拼接时间格式
        let setTime = `${getYear}`
        resultTime.push(setTime)
        /**
         * 重新设置开始时间
         * 使用 setFullYear() 方法会自动将时间累加,返回的是时间戳格式
         * 使用 new Date() 将时间重新设置为标准时间
         */
        start = new Date(start.setFullYear(getYear   1))
    }
    return resultTime
}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持Devmax。

Vue如何获取两个时间点之间的所有间隔时间的更多相关文章

  1. Vue如何指定不编译的文件夹和favicon.ico

    这篇文章主要介绍了Vue如何指定不编译的文件夹和favicon.ico,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  2. vue自定义加载指令v-loading占位图指令v-showimg

    这篇文章主要为大家介绍了vue自定义加载指令和v-loading占位图指令v-showimg的示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  3. vue使用动画实现滚动表格效果

    这篇文章主要为大家详细介绍了vue使用动画实现滚动表格效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  4. 关于Vue 监控数组的问题

    这篇文章主要介绍了Vue 监控数组的示例,主要包括Vue 是如何追踪数据发生变化,Vue 如何更新数组以及为什么有些数组的数据变更不能被 Vue 监测到,对vue监控数组知识是面试比较常见的问题,感兴趣的朋友一起看看吧

  5. Vue子组件props从父组件接收数据并存入data

    这篇文章主要介绍了Vue子组件props从父组件接收数据并存入data的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

  6. Vue h函数的使用详解

    本文主要介绍了Vue h函数的使用详解,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  7. VUE响应式原理的实现详解

    这篇文章主要为大家详细介绍了VUE响应式原理的实现,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助

  8. vue+Element ui实现照片墙效果

    这篇文章主要为大家详细介绍了vue+Element ui实现照片墙效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  9. vue+elemet实现表格手动合并行列

    这篇文章主要为大家详细介绍了vue+elemet实现表格手动合并行列,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  10. iview+vue实现导入EXCEL预览功能

    这篇文章主要为大家详细介绍了iview+vue实现导入EXCEL预览功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

随机推荐

  1. js中‘!.’是什么意思

  2. Vue如何指定不编译的文件夹和favicon.ico

    这篇文章主要介绍了Vue如何指定不编译的文件夹和favicon.ico,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  3. 基于JavaScript编写一个图片转PDF转换器

    本文为大家介绍了一个简单的 JavaScript 项目,可以将图片转换为 PDF 文件。你可以从本地选择任何一张图片,只需点击一下即可将其转换为 PDF 文件,感兴趣的可以动手尝试一下

  4. jquery点赞功能实现代码 点个赞吧!

    点赞功能很多地方都会出现,如何实现爱心点赞功能,这篇文章主要为大家详细介绍了jquery点赞功能实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  5. AngularJs上传前预览图片的实例代码

    使用AngularJs进行开发,在项目中,经常会遇到上传图片后,需在一旁预览图片内容,怎么实现这样的功能呢?今天小编给大家分享AugularJs上传前预览图片的实现代码,需要的朋友参考下吧

  6. JavaScript面向对象编程入门教程

    这篇文章主要介绍了JavaScript面向对象编程的相关概念,例如类、对象、属性、方法等面向对象的术语,并以实例讲解各种术语的使用,非常好的一篇面向对象入门教程,其它语言也可以参考哦

  7. jQuery中的通配符选择器使用总结

    通配符在控制input标签时相当好用,这里简单进行了jQuery中的通配符选择器使用总结,需要的朋友可以参考下

  8. javascript 动态调整图片尺寸实现代码

    在自己的网站上更新文章时一个比较常见的问题是:文章插图太宽,使整个网页都变形了。如果对每个插图都先进行缩放再插入的话,太麻烦了。

  9. jquery ajaxfileupload异步上传插件

    这篇文章主要为大家详细介绍了jquery ajaxfileupload异步上传插件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  10. React学习之受控组件与数据共享实例分析

    这篇文章主要介绍了React学习之受控组件与数据共享,结合实例形式分析了React受控组件与组件间数据共享相关原理与使用技巧,需要的朋友可以参考下

返回
顶部