两行代码轻松搞定JavaScript日期验证


Posted in Javascript onAugust 03, 2016

我们通常在 JavaScript 中验证日期,基本的思路大概是,先判断年月日是否有效,再判断当月是否有当日,比如一些月份没有 31 日,平年二月没有 29、30 日,闰年二月没有 30 日等等。 

偶然间发现一个技巧,能判断以上所有的情况。除去赋值代码,实际代码仅两行。 

其实这个技巧也很简单,通过实例化 Date 对象来生成一个合法的日期,再去对比年月日是否相等,以验证日期是否合法。 

var originalYear = 2016;
var originalMonth = 12;
var originalDay = 32;
var date = new Date(originalYear, originalMonth - 1, originalDay);
var year = date.getFullYear();
var month = date.getMonth() + 1;
var day = date.getDate();
console.log(year + '-' + month + '-' + day); // 2017-1-1

因为 12 月没有 32 日,所以输出的日期就是第二年的 1 月 1 日,年月日不相等,所以 2016 年 12 月 32 日不是一个合法的日期。 

具体的实现代码:

var validateDate = function (originalYear, originalMonth, originalDay) {
 var date = new Date(originalYear, originalMonth - 1, originalDay);
 var year = date.getFullYear();
 var month = date.getMonth() + 1;
 var day = date.getDate();
 return year == originalYear && month == originalMonth && day == originalDay;
}

测试: 

console.log(validateDate()); // false
console.log(validateDate(-1, -1, -1)); // false
console.log(validateDate('', '', '')); // false
console.log(validateDate([], [], [])); // false
console.log(validateDate({}, {}, {})); // false

// 平年二月。
console.log(validateDate(2015, 2, 29)); // false
// 闰年二月。
console.log(validateDate(2016, 2, 29)); // true
console.log(validateDate(2016, 6, 30)); // true
console.log(validateDate(2016, 6, 31)); // false
console.log(validateDate('2016', '01', '01')); // true

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
提高 DHTML 页面性能
Dec 25 Javascript
Javascript里使用Dom操作Xml
Jan 22 Javascript
javascript 密码强弱度检测万能插件
Feb 25 Javascript
JavaScript中变量声明有var和没var的区别示例介绍
Sep 15 Javascript
推荐9款炫酷的基于jquery的页面特效
Dec 07 Javascript
Webpack 实现 AngularJS 的延迟加载
Mar 02 Javascript
jQuery无刷新上传之uploadify简单代码
Jan 17 Javascript
3分钟掌握常用的JS操作JSON方法总结
Apr 25 Javascript
Angular实现的简单定时器功能示例
Dec 28 Javascript
jQuery封装animate.css的实例
Jan 04 jQuery
JavaScript使用Math.random()生成简单的验证码
Jan 21 Javascript
vue-路由精讲 二级路由和三级路由的作用
Aug 06 Javascript
Highcharts学习之数据列
Aug 03 #Javascript
JavaScript中日期函数的相关操作知识
Aug 03 #Javascript
JS实现的表格行上下移动操作示例
Aug 03 #Javascript
基于jQuery实现淡入淡出效果轮播图
Jul 31 #Javascript
JS使用正则表达式实现关键字替换加粗功能示例
Aug 03 #Javascript
Angular2内置指令NgFor和NgIf详解
Aug 03 #Javascript
JS简单实现点击复制链接的方法
Aug 03 #Javascript
You might like
PHP 文件类型判断代码
2009/03/13 PHP
js兼容标准的表格变色效果
2008/06/28 Javascript
jQuery powerFloat万能浮动层下拉层插件使用介绍
2010/12/27 Javascript
表格奇偶行设置不同颜色的核心JS代码
2013/12/24 Javascript
javascript数组快速打乱重排的方法
2014/01/02 Javascript
js控制分页打印、打印分页示例
2014/02/08 Javascript
javasciprt下jquery函数$.post执行无响应的解决方法
2014/03/13 Javascript
jquery复选框checkbox实现删除前判断
2014/04/20 Javascript
JavaScript异步加载浅析
2014/12/28 Javascript
yui3的AOP(面向切面编程)和OOP(面向对象编程)
2015/05/01 Javascript
javascript正则表达式总结
2016/02/29 Javascript
一款简单的jQuery图片标注效果附源码下载
2016/03/22 Javascript
JS中的forEach、$.each、map方法推荐
2016/04/05 Javascript
angular2+nodejs实现图片上传功能
2017/03/27 NodeJs
js中的事件委托或是事件代理使用详解
2017/06/23 Javascript
使用Electron构建React+Webpack桌面应用的方法
2017/12/15 Javascript
element ui table(表格)实现点击一行展开功能
2018/12/04 Javascript
Python面向对象编程中的类和对象学习教程
2015/03/30 Python
python目录与文件名操作例子
2016/08/28 Python
详解如何使用Python编写vim插件
2017/11/28 Python
Python爬虫番外篇之Cookie和Session详解
2017/12/27 Python
python 瀑布线指标编写实例
2020/06/03 Python
解决Keras中CNN输入维度报错问题
2020/06/29 Python
Python实现钉钉/企业微信自动打卡的示例代码
2021/02/02 Python
Python3+PyCharm+Django+Django REST framework配置与简单开发教程
2021/02/16 Python
澳大利亚新奇小玩意网站:Yellow Octopus
2017/12/28 全球购物
免税水晶:Duty Free Crystal
2019/05/13 全球购物
NICKIS.com荷兰:设计师儿童时装
2020/01/08 全球购物
迪卡侬(Decathlon)加拿大官网:源自法国的运动专业超市
2020/11/22 全球购物
Unix/Linux开发面试题
2016/08/16 面试题
三方股份合作协议书
2014/10/13 职场文书
写给医院的感谢信
2015/01/22 职场文书
旷课检讨书范文
2015/01/27 职场文书
网上祭英烈活动总结
2015/02/04 职场文书
煤矿安全学习心得体会
2016/01/18 职场文书
html+css实现分层金字塔的实例
2021/06/02 HTML / CSS