美文网首页
js日期实用工具函数

js日期实用工具函数

作者: 小小少年小阿清 | 来源:发表于2020-04-05 20:48 被阅读0次

    获取当前日期

    // 获取当前日期
    function getNowDate () {
      let date = new Date()
      let Y = date.getFullYear()
      let M = date.getMonth() + 1
      let D = date.getDate()
      M = M < 10 ? `0${M}` : M
      D = D < 10 ? `0${D}` : D
      return `${Y}-${M}-${D}`
    }
    

    获取当前日期前n个月

    // 获取当前日期前n个月的日期
    function getPreMonthDay (date, monthNum) {
      let dateArr = date.split('-')
      let year = dateArr[0] // 获取当前日期的年份
      let month = dateArr[1] // 获取当前日期的月份
      let day = dateArr[2] // 获取当前日期的日
      // let days = new Date(year, month, 0)
      // days = days.getDate() //获取当前日期中月的天数
      let year2 = year
      let month2 = parseInt(month) - monthNum
      if (month2 <= 0) {
        year2 =
          parseInt(year2) -
          parseInt(month2 / 12 === 0 ? 1 : Math.abs(parseInt(month2 / 12)) + 1)
        month2 = 12 - (Math.abs(month2) % 12)
      }
      let day2 = day
      let days2 = new Date(year2, month2, 0)
      days2 = days2.getDate()
      if (day2 > days2) {
        day2 = days2
      }
      if (month2 < 10) {
        month2 = '0' + month2
      }
      let t2 = year2 + '-' + month2 + '-' + day2
      return t2
    }
    

    判断是否为合法日期

    /**
     * @method 判断是否为合法日期
     * @param date 为Date转化后的值
     */
    function isValidDate (date) {
      return date instanceof Date && !isNaN(date.getTime())
    }
    

    判断一个时间是否位于两时间之间

    /**
     * @method 判断一个时间是否位于两时间之间
     * @param sDate1,sDate2为日期,如:2019-01-01
     */
    function dateBetweenJudget (startDate, endDate, date0) {
      let oStartDate = new Date(startDate)
      let oEndDate = new Date(endDate)
      let oDate0 = new Date(date0)
      if ((oEndDate.getTime() >= oDate0.getTime()) && (oStartDate.getTime() <= oDate0.getTime())) {
        return true
      }
      return false
    }
    

    比较两个日期的大小

    /* @method 比较两个日期的大小
     * @param sDate1,sDate2为日期,如:2019-01-01
     */
    function dateJudget (sDate1, sDate2) {
      var oDate1 = new Date(sDate1)
      var oDate2 = new Date(sDate2)
      if (oDate1.getTime() > oDate2.getTime()) {
        return false
      }
      return true
    }
    

    获取当前月份前n个月或者后n个月(返回日期列表)

    /**
     * @method 获取当前月份前n个月或者后n个月
     * @param range 范围,before表示前n个月,after表示后n个月
     * @param date 特定的日期,如2019-01-01,若传‘’,默认为当前日期
     */
    function getMonthRange (range, n, date = '') {
      var monthArr = []
      let data = (date === '') ? new Date() : new Date(date)
      if (range === 'before') {
        data.setMonth(data.getMonth() + 1, 1) // 获取到当前月份,设置月份
      } else {
        data.setMonth(data.getMonth() - 1, 1) // 获取到当前月份,设置月份
      }
      for (var i = 0; i < n; i++) {
        if (range === 'before') {
          data.setMonth(data.getMonth() - 1) // 每次循环一次 月份值减1
        } else {
          data.setMonth(data.getMonth() + 1) // 每次循环一次 月份值加1
        }
        let m = data.getMonth() + 1
        let m2 = m < 10 ? '0' + m : m
        let json = {
          yearAndMonth: data.getFullYear() + '-' + m2,
          month: m,
          year: data.getFullYear(),
        }
        monthArr.push(json)
      }
      return monthArr
    }
    

    获取某个月有多少天

    /**
     * @method 获取某个月有多少天数
     * @param year 年
     * @param month 月(如:2)
     */
    function getDaysInMonth (year, month) {
      return new Date(year, month, 0).getDate()
    }
    

    获取当前日期的前一个月

    /**
     * @method 获取当前日期的前一个月
     */
    function getPreMonthDate (times) {
      times = new Date(times)
      let Y = times.getFullYear()
      let M = times.getMonth() + 1
      const D = times.getDate()
      if (M === 1) {
        M = 12
        Y = Y - 1
      } else {
        M = M - 1
      }
      return `${Y}-${M}-${D}`
    }
    

    获取当前日期的前两个月

    /**
     * @method 获取当前日期的前两个月
     */
    function getPreMonthDate2 (times) {
      times = new Date(times)
      let Y = times.getFullYear()
      let M = times.getMonth() + 1
      const D = times.getDate()
      if (M === 2) {
        M = 12
        Y = Y - 1
      } else if (M === 1) {
        M = 11
        Y = Y - 1
      } else {
        M = M - 2
      }
      return `${Y}-${M}-${D}`
    }
    

    根据日期判断今天周几

    /**
     * @method 根据日期判断今天周几
     * @param {*} date 日期格式为字符串2018-01-01
     */
    function getDateWeek (date) {
      const weekDay = ['周日', '周一', '周二', '周三', '周四', '周五', '周六']
      const myDate = new Date(Date.parse(date))
      return weekDay[myDate.getDay()]
    }
    

    判断两个日期之间的天数差值

    /**
     * @method 判断两个日期之间的天数差值
     * @param {*} endDate 结束天数 日期格式为字符串2018-01-01
     * @param {*} startDate 开始日期 日期格式为字符串2018-01-01
     */
    function DateDifference (endDate, startDate) {
      return parseInt((Math.abs(new Date(endDate) - new Date(startDate)) / 1000 / 60 / 60 / 24) + 1)
    }
    

    相关文章

      网友评论

          本文标题:js日期实用工具函数

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