两行代码轻松搞定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 相关文章推荐
JavaScript使用prototype定义对象类型(转)[
Dec 22 Javascript
js仿百度贴吧验证码特效实例代码
Jan 16 Javascript
jQuery1.9.1针对checkbox的调整方法(prop)
May 01 Javascript
JavaScript中的依赖注入详解
Mar 18 Javascript
基于HTML5上使用iScroll实现下拉刷新,上拉加载更多
May 21 Javascript
微信小程序 wx.request(OBJECT)发起请求详解
Oct 13 Javascript
Bootstrap 网站实例之单页营销网站
Oct 20 Javascript
vue2.0 keep-alive最佳实践
Jul 06 Javascript
jquery操作ul的一些操作笔记整理(干货)
Aug 31 jQuery
浅谈webpack打包过程中因为图片的路径导致的问题
Feb 21 Javascript
vue的style绑定background-image的方式和其他变量数据的区别详解
Sep 03 Javascript
node创建Vue项目步骤详解
Mar 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 Cookie的使用教程详解
2013/06/03 PHP
php变量作用域的深入解析
2013/06/03 PHP
php5.3 goto函数介绍和示例
2014/03/21 PHP
php+MySQL判断update语句是否执行成功的方法
2014/08/28 PHP
jQuery 选择器、DOM操作、事件、动画
2010/11/25 Javascript
深入理解JavaScript系列(6):S.O.L.I.D五大原则之单一职责SRP
2012/01/15 Javascript
js实现拉伸拖动iframe的具体代码
2013/08/03 Javascript
jQuery解析XML文件同时动态增加js文件的方法
2015/06/01 Javascript
充分发挥Node.js程序性能的一些方法介绍
2015/06/23 Javascript
JavaScript使用DeviceOne开发实战(二) 生成调试安装包
2015/12/01 Javascript
js获取及修改网页背景色和字体色的方法
2015/12/29 Javascript
JS使用正则表达式过滤多个词语并替换为相同长度星号的方法
2016/08/03 Javascript
javaScript 逻辑运算符使用技巧整理
2017/05/03 Javascript
mpvue中配置vuex并持久化到本地Storage图文教程解析
2018/03/15 Javascript
JS实现获取毫秒值及转换成年月日时分秒的方法
2018/08/15 Javascript
基于jQuery ztree实现表格风格的树状结构
2018/08/31 jQuery
微信小程序使用template标签实现五星评分功能
2018/11/03 Javascript
React优化子组件render的使用
2019/05/12 Javascript
Handtrack.js库实现实时监测手部运动(推荐)
2021/02/08 Javascript
Python生成器(Generator)详解
2015/04/13 Python
Python中tell()方法的使用详解
2015/05/24 Python
Python实现将不规范的英文名字首字母大写
2016/11/15 Python
详解python的四种内置数据结构
2019/03/19 Python
基于django ManyToMany 使用的注意事项详解
2019/08/09 Python
使用Python防止SQL注入攻击的实现示例
2020/05/21 Python
美国户外生活方式品牌:Eddie Bauer
2016/12/28 全球购物
英国在线房屋中介网站:Yopa
2018/01/09 全球购物
瑞士设计师家具和家居饰品网上商店:Bruno Wickart
2019/03/18 全球购物
Oasis服装官网:时尚女装在线
2020/07/09 全球购物
输入一行文字,找出其中大写字母、小写字母、空格、数字、及其他字符各有多少
2016/04/15 面试题
面向对象概念面试题(.NET)
2016/11/04 面试题
设计顾问服务计划书
2014/05/04 职场文书
网络文明传播志愿者活动方案
2014/08/20 职场文书
旷课检讨书500字
2014/10/14 职场文书
县委党的群众路线教育实践活动工作情况报告
2014/10/25 职场文书
Mysql如何查看是否使用到索引
2022/12/24 MySQL