js時間溢出處理

當給Date函數(shù)的時間不存在時,Date會溢出,如圖:
25年的9月沒有31號。將不存在的正確格式日期輸入給Date時,Date溢出為10月1號


5f154792b2b802953ca43aad79f9141b.png

此時要判斷日期是否有效可以將格式化前和格式化后的兩個日期進行對比

let tempY = +date.slice(0, 4)
let tempM = +date.slice(5, 7)
let tempD = +date.slice(8, 10)
let checkDate = new Date(date)
let isTrue = checkDate.getMonth() + 1 !== tempM || tempY !== checkDate.getFullYear() || tempD !== checkDate.getDate()

函數(shù)功能:遞歸解析日期是否為有效日期,若日期無效則月+1或年月+1,直到日期有效

  tempCheck(date, callback) {
      if (!date) return
      // 校驗日期格式 根據(jù)自己的需求來
      date = date.replace(/-(\d)(?!\d)/g, "-0$1")
      let pattern = /^\d{4}-\d{2}-\d{2}$/
      if(pattern.test(dateString)) return
      // 判斷日期是否有效
      let tempY = +date.slice(0, 4)
      let tempM = +date.slice(5, 7)
      let tempD = +date.slice(8, 10)
      let checkDate = new Date(date)
      if (checkDate.getMonth() + 1 !== tempM || tempY !== checkDate.getFullYear() || tempD !== checkDate.getDate()) {
        if (tempM + 1 > 12) {
          tempM = 1
          tempY++
        } else {
          tempM++
        }
        date = `${tempY}-${tempM}-${tempD}`
        this.tempCheck(date, callback)
      } else {
        callback(date)
        return
      }
    },
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 簡述與安裝使用Date對象增強日期(時間)等值對比日期(時間)的增減查詢當前日期起止范圍靜態(tài)方法:通過起止范圍獲取...
    阿拉拉布閱讀 2,020評論 0 1
  • 最近初略的看完了《批處理標準教程-MHL版本》,把教程中的一些對我有幫助的資料轉為MD格式,就當是做個筆記,加深記...
    禾白小三飄閱讀 1,583評論 1 7
  • 一、Java 簡介 Java是由Sun Microsystems公司于1995年5月推出的Java面向對象程序設計...
    子非魚_t_閱讀 4,564評論 1 44
  • 〇、前言 本文共108張圖,流量黨請慎重! 歷時1個半月,我把自己學習Python基礎知識的框架詳細梳理了一遍。 ...
    Raxxie閱讀 19,584評論 17 410
  • ORA-00001: 違反唯一約束條件 (.) 錯誤說明:當在唯一索引所對應的列上鍵入重復值時,會觸發(fā)此異常。 O...
    我想起個好名字閱讀 5,981評論 0 9

友情鏈接更多精彩內容