`

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 常用校验代码”可能包含了多种用于验证用户输入、数据格式以及其他关键业务逻辑的JavaScript函数和方法。 在JavaScript中,数据校验...

    日期校验相关代码

    JavaScript 是一种常用的客户端脚本语言,常用于网页交互,因此在浏览器环境中进行日期校验时,JavaScript 是首选工具之一。本篇将深入探讨如何使用正则表达式和JavaScript来实现日期校验。 首先,我们来看第一个...

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

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

    纯javascript校验框架

    一款纯javascript的校验框架,支撑动态的生成界面校验和静态的界面校验,十分实用,并且可以支撑自定义校验方法。 并且本人正在着手设计一套gme的平台,目前已经实现了很多快速开发经验的积累,有兴趣者可以联系...

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

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

    javascript数据校验正则表达式

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

    javascript校验集合

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

    javascript校验身份证号码合法性

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

    CRC16校验-Javascript代码

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

    企业动态网站应用程序开发——输入数据实时校验函数及使用方法(Javascript篇).pdf

    企业动态网站应用程序开发——输入数据实时校验函数及使用方法(Javascript篇) 本文主要讲述了企业动态网站应用程序开发中的输入数据实时校验函数及使用方法,以Javascript为例。我们知道,企业信息化是指利用应用...

    JavaScript日期和时间格式化全指南

    在JavaScript开发中,处理日期和时间是常见需求之一。无论是显示在用户界面上,还是进行数据存储和交换,正确地格式化日期和时间至关重要。JavaScript提供了多种方式来格式化日期和时间,包括原生的Date对象方法、...

    兼容多种IE的javascript日期控件

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

    JavaScript日期时间选择控件

    JavaScript日期时间选择控件是一种常见的前端开发工具,用于在网页上提供用户友好的日期和时间输入界面。在网页设计中,这种控件可以极大提升用户体验,因为它允许用户通过直观的日历视图和时间选择器来设定日期和...

    社会统一信用代码校验函数(JavaScript)

    ### 社会统一信用代码校验函数(JavaScript) #### 知识点概述 本文将详细介绍一个用于验证中国社会统一信用代码的社会统一信用代码校验函数(JavaScript)。此函数旨在检查输入的社会统一信用代码是否符合规定的...

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

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

Global site tag (gtag.js) - Google Analytics