`

Javascript 日期校验完备全过程

阅读更多

    在原来公司的项目组工作的过程中,自己实现了一个用于校验用户输入数据合法性的Javascript Validation Framework。在这个Framework实现的过程中,在参考了一些网上资源之后,自己写了一个日期校验的函数,满心以为这个校验函数已经够完备了,结果还是经历了多次的修改。   

function validateDate(year, month, day) 
{
    
var regex = new RegExp(/S/);  
    
if(regex.test(day)&& regex.test(month) && regex.test(year)) 
    {
        
var regExp = new RegExp(/d/);
        
if(!regExp.test(day)|| !regExp.test(month) || !regExp.test(year))
            
return ("The date fields contains non-number.");
        
var tempDateValue = year + "/" + month + "/" + day;
        
if(tempDateValue.length < 6||tempDateValue.length > 10)
            
return ("The length of date fields is invalid."); 
        
var tempDate = new Date(tempDateValue);
        
if(isNaN(tempDate))
            
return ("The scope of date fields is invalid.");   
        
if(parseInt(year) > 1900 && parseInt(year) < 2500 && ((tempDate.getUTCFullYear
()).toString()
==year) && (tempDate.getMonth()==parseInt(month)-1&& (tempDate.getDate()
==parseInt(day)))
            
return ("The date fields is OK.");
        
else
            
return ("The date fields is invalid.");
    }
}

                                                           (为了说明问题,代码略有改动)

        1、使用测试数据:year="2003",month="08",day="01"。这原本是一个合法的日期,然而出乎我的意料,返回的信息居然是:The date fields are invalid。根据返回的信息,将错误定位在最后一个条件语句。经过仔细的检查,发现parseInt("08") = 0,条件语句返回自然是false了。为什么parseInt("08")会得到这样的结果呢?原来parseInt在没有指定转化进制的时候,是根据字符串对应的进制进行转换,而以0开头的字符串都默认为八进制的,那么在八进制中8是不存在的,因此返回0也就不奇怪了。修改办法就是将所有的parseInt函数指定进制即可,如parseInt(month)改为parseInt(month,10)。
        2、使用测试数据:year="2000",month="01",day="01"。这个日期也是OK的,然而返回的信息也是:The date fields are invalid。这次的错误又是因为什么呢?原来错误在于getUTCFullYear,由于中国处于时区的东八区,而通过var tempDate = new Date(tempDateValue)获得日期的对象,默认是包含具体的时间,且初始化值为00:00:00。那么在中国是跨入二十一世纪了,可是在格林威治却仍然是1999年,那么出错也是自然的事情了,修改办法是将getUTCFullYear改为getFullYear即可。

分享到:
评论

相关推荐

    JavaScript 数据校验 用户登录 示例代码

    JavaScript 数据校验 用户登录 示例代码JavaScript 数据校验 用户登录 示例代码JavaScript 数据校验 用户登录 示例代码JavaScript 数据校验 用户登录 示例代码JavaScript 数据校验 用户登录 示例代码JavaScript 数据...

    JavaScript 数据校验 正则表达式 示例代码

    JavaScript 数据校验 正则表达式 示例代码JavaScript 数据校验 正则表达式 示例代码JavaScript 数据校验 正则表达式 示例代码JavaScript 数据校验 正则表达式 示例代码JavaScript 数据校验 正则表达式 示例代码...

    javascript 常用校验代码

    在开发过程中,有效的代码校验是确保程序质量的关键步骤。这篇博客“javascript 常用校验代码”可能包含了多种用于验证用户输入、数据格式以及其他关键业务逻辑的JavaScript函数和方法。 在JavaScript中,数据校验...

    日期,日期时间类型数据格式校验

    本文将深入探讨“日期,日期时间类型数据格式校验”的相关知识点。 首先,日期和日期时间数据格式的多样性是导致校验复杂性的主要原因。常见的日期格式有“年-月-日”(如2022-01-01)、“月/日/年”(如01/01/2022...

    json格式校验前端插件(javascript)

    本文将详细介绍一个基于JavaScript的JSON格式校验前端插件,以及如何利用它来提高开发效率。 首先,这个插件主要提供了以下功能: 1. **JSON字符串格式化**:当接收到JSON数据时,前端开发者可以使用这个插件将...

    javascript日期选择控件

    javascript日期选择控件 支持移动端

    javascript数据校验正则表达式

    JavaScript是一种广泛用于网页和网络应用的编程语言,其在处理用户输入时,数据校验扮演着至关重要的角色。正则表达式(Regular Expression)是进行字符串匹配和操作的强大工具,常用于数据验证。本文将深入探讨如何...

    javascript日期验证之输入日期大于等于当前日期

    本文实例分析了javascript输入日期大于等于当前日期验证代码,分享给大家供大家参考,具体如下: [removed] $(function () { var d = new Date(); var strDate = getDateStr(d); $("#beginTime").val(strDate)...

    javascript CRC8校验

    javascript CRC8校验

    javascript 日期时间控件

    JavaScript 日期时间控件是一种在Web应用程序中用于用户交互式选择日期和时间的组件。它通常以日历或时钟的图形用户界面呈现,提供了一种直观且易于使用的交互方式,使得用户能够方便地输入或选择日期和时间值。在这...

    javascript校验集合

    在JavaScript编程中,数据校验是一项至关重要的任务,它确保输入的数据符合预期的格式和标准,从而提高程序的稳定性和安全性。在这个名为“javascript校验集合”的资源中,你将找到一系列针对不同类型数据的验证函数...

    javascript校验身份证号码合法性

    使用javascript校验身份证号码的合法性 校验规则严格,很容易套用到项目中 套用例子详见http://blog.csdn.net/zcyhappy1314/article/details/8645189

    CRC16校验-Javascript代码

    ### CRC16校验算法详解及JavaScript实现 #### 一、CRC校验基本概念 循环冗余校验(Cyclic Redundancy Check,CRC)是一种数据校验技术,广泛应用于通信领域,用以检测或纠正传输错误。CRC通过计算一个固定长度的...

    正则表达式-JavaScript字符校验方法

    本篇将详细探讨JavaScript中的正则表达式及其字符校验方法。 1. **创建正则表达式** - 字面量方式:通过`/pattern/flags`来创建,例如`/hello/`。 - 构造函数方式:使用`new RegExp('pattern', 'flags')`,如`new...

    javascript日期输入文本框

    JavaScript日期输入文本框是网页开发中常见的一种交互元素,它允许用户在文本框中输入或选择日期。在JavaScript中,处理日期和时间通常涉及到`Date`对象和相关的函数。在这个主题下,我们将深入探讨如何创建一个...

    javascript常用的一些校验

    6. **日期校验** 使用`Date.parse(dateString)`或`new Date(dateString)`来解析日期字符串,如果无效,会返回NaN。 7. **邮箱和电话号码校验** - 邮箱:`/^\S+@\S+\.\S+$/.test(email)`。 - 电话号码:这取决于...

    兼容多种IE的javascript日期控件

    在JavaScript日期处理方面,可能会涉及到`Date`对象的使用,包括创建新的日期实例、获取和设置日期部分(如年、月、日)、格式化日期字符串等操作。此外,可能还会有对CSS和DOM操作的部分,以构建和控制日期选择器的...

    美观的javascript日期控件

    JavaScript日期控件是一种在网页上显示和操作日期的交互元素,通常用于用户输入或选择日期。在.NET框架中,可以通过JavaScript库或者插件与后台代码相结合,为用户提供更直观、友好的日期输入体验。本篇将详细介绍...

    JavaScript日期控件02(日期选择器)

    JavaScript日期控件是Web开发中常见的一种交互元素,主要用于用户在网页上选择日期。这篇博客“JavaScript日期控件02(日期选择器)”显然深入探讨了如何创建或使用一个自定义的日期选择器,这在很多场景下都非常...

    JavaScript日期控件(日期选择器),很不错的,使用方便。

    JavaScript日期控件是Web开发中常见的一种交互元素,主要用于用户在网页上输入或选择日期。在没有这样的控件之前,用户通常需要手动输入日期,这可能导致格式错误或输入不便。JavaScript日期选择器通过提供可视化...

Global site tag (gtag.js) - Google Analytics