js时间溢出处理

当给Date函数的时间不存在时,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()

函数功能:递归解析日期是否为有效日期,若日期无效则月+1或年月+1,直到日期有效

  tempCheck(date, callback) {
      if (!date) return
      // 校验日期格式 根据自己的需求来
      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
      }
    },
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 简述与安装使用Date对象增强日期(时间)等值对比日期(时间)的增减查询当前日期起止范围静态方法:通过起止范围获取...
    阿拉拉布阅读 2,036评论 0 1
  • 最近初略的看完了《批处理标准教程-MHL版本》,把教程中的一些对我有帮助的资料转为MD格式,就当是做个笔记,加深记...
    禾白小三飘阅读 1,609评论 1 7
  • 一、Java 简介 Java是由Sun Microsystems公司于1995年5月推出的Java面向对象程序设计...
    子非鱼_t_阅读 4,680评论 1 44
  • 〇、前言 本文共108张图,流量党请慎重! 历时1个半月,我把自己学习Python基础知识的框架详细梳理了一遍。 ...
    Raxxie阅读 19,620评论 17 410
  • ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常。 O...
    我想起个好名字阅读 6,119评论 0 9

友情链接更多精彩内容