zoukankan      html  css  js  c++  java
  • js 日期有效性验证 的一点思考

    在日常项目中经常遇到日期输入验证,以前我遇到的项目是日期只能通过日历控件来选择,最近我同事遇到一个问题是日期除了可以通过日历控件来输入也可以手动来输入,可是我们项目中居然没有日期格式的验证方法(备注:产品已经运行10多年了)。于是打算自己来写一个日期验证的方法,结果在网上一搜发现还有不少,经过验证并且觉得比较好用的code 如下:

     function isdate(str) {
                var result = str.match(/^(d{1,4})(-|/)(d{1,2})2(d{1,2})$/);
                if (result == null) return false;
                var d = new Date(result[1], result[3] - 1, result[4]);
                return (d.getFullYear() == result[1] && d.getMonth() + 1 == result[3] && d.getDate() == result[4]);
            }
            function isdatetime(str) {
                var result = str.match(/^(d{4})(-|/)(d{1,2})2(d{1,2}) (d{1,2}):(d{1,2}):(d{1,2})$/);
                if (result == null) return false;
                var d = new Date(result[1], result[3] - 1, result[4], result[5], result[6], result[7]);
                return (d.getFullYear() == result[1] && (d.getMonth() + 1) == result[3] && d.getDate() == result[4] && d.getHours() == result[5] && d.getMinutes() == result[6] && d.getSeconds() == result[7]);
            }
            function istime(str) {
                var a = str.match(/^(d{1,2})(:)?(d{1,2})2(d{1,2})$/);
                if (a == null) { return false; }
                if (a[1] >= 24 || a[3] >= 60 || a[4] >= 60) {
                    return false
                }
                return true;
            }
            function compareDate(d1, d2) {
                return ((new Date(d1.replace(/-/g, "/"))) < (new Date(d2.replace(/-/g, "/"))));
            }

    按理说,项目一旦开始就应该有一些通用的组件(方法)比如这里的日期验证,还有email格式验证 等等。(吐个槽,前一段时间有个任务是修改eamil的格式,按理说验证email的格式在js里面应该只有一个方法啊,但是经过项目调查后发现有大概10个地方都在验证email格式是否正确,也就是说我要改这个10个地方,如果少改了一个地方就是一个bug。。。。。。,项目架构如此,该问bug能不少吗?产品质量能提高吗?)。

    我也经过过设计模式,设计原则的时代,近10年我开发的理念是“为复用而开发,为使用而组装”,code的复用度将是项目和产品的一个重要的技术指标。

  • 相关阅读:
    windows定时任务schtasks命令详细解
    TCP/IP 详解7 Ping指令
    Vue JSX、自定义 v-model
    DOM 元素的循环遍历
    关于 Blob
    Vue.nextTick 的应用解析
    弹窗组件及其回调函数
    krry-transfer ⏤ 基于 element 的升级版穿梭框组件发布到 npm 啦
    防抖与节流 & 若每个请求必须发送,如何平滑地获取最后一个接口返回的数据
    Java 单文件、多文件上传 / 实现上传进度条
  • 原文地址:https://www.cnblogs.com/majiang/p/5578883.html
Copyright © 2011-2022 走看看