两行代码轻松搞定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 相关文章推荐
探索Emberjs制作一个简单的Todo应用
Nov 07 Javascript
键盘KeyCode值列表汇总
Nov 26 Javascript
firefox下jquery ajax返回object XMLDocument处理方法
Jan 26 Javascript
js图片延迟技术一般的思路与示例
Mar 20 Javascript
js获取 type=radio 值的方法
May 09 Javascript
javascript获取本机操作系统类型的方法
Aug 13 Javascript
JS实现经典的中国地区三级联动下拉菜单功能实例【测试可用】
Jun 06 Javascript
AngularJS基于MVC的复杂操作实例讲解
Dec 31 Javascript
vue自定义底部导航栏Tabbar的实现代码
Sep 03 Javascript
一百行JS代码实现一个校验工具
Apr 30 Javascript
Vue实现页面添加水印功能
Nov 09 Javascript
Vue 根据条件判断van-tab的显示方式
Aug 03 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的switch判断语句的“高级”用法详解
2014/10/01 PHP
详解WordPress中提醒安装插件以及隐藏插件的功能实现
2015/12/25 PHP
PHP实现的oracle分页函数实例
2016/01/25 PHP
php并发加锁问题分析与设计代码实例讲解
2021/02/26 PHP
用于判断用户注册时,密码强度的JS代码
2009/01/01 Javascript
js过滤数组重复元素的方法
2010/09/05 Javascript
javascript 常用功能总结
2012/03/18 Javascript
jQuery动态添加 input type=file的实现代码
2012/06/14 Javascript
Javascript节点关系实例分析
2015/05/15 Javascript
jQuery实现简单下拉导航效果
2015/09/07 Javascript
jQuery 更改checkbox的状态,无效的解决方法
2016/07/22 Javascript
详谈Ajax请求中的async:false/true的作用(ajax 在外部调用问题)
2017/02/10 Javascript
js 转义字符及URI编码详解
2017/02/28 Javascript
vue自定义移动端touch事件之点击、滑动、长按事件
2018/07/10 Javascript
vue基于element-ui的三级CheckBox复选框功能的实现代码
2018/10/15 Javascript
jquery无缝图片轮播组件封装
2020/11/25 jQuery
jquery获取input输入框中的值
2019/11/13 jQuery
js实现多个标题吸顶效果
2020/01/08 Javascript
[15:23]教你分分钟做大人:虚空假面
2014/10/30 DOTA
python动态参数用法实例分析
2015/05/25 Python
Django模板变量如何传递给外部js调用的方法小结
2017/07/24 Python
python实现媒体播放器功能
2018/02/11 Python
python 将有序数组转换为二叉树的方法
2019/03/26 Python
利用pyinstaller打包exe文件的基本教程
2019/05/02 Python
简单了解django orm中介模型
2019/07/30 Python
python中return如何写
2020/06/18 Python
python实现测试工具(二)——简单的ui测试工具
2020/10/19 Python
CSS3的transition和animation的用法实例介绍
2014/08/20 HTML / CSS
canvas绘制表情包的示例代码
2018/07/09 HTML / CSS
main 主函数执行完毕后,是否可能会再执行一段代码,给出说明
2012/12/05 面试题
农田水利实习自我鉴定
2013/09/19 职场文书
幼师岗位求职简历的自荐信格式
2013/09/21 职场文书
顶碗少年教学反思
2014/02/21 职场文书
西岭雪山导游词
2015/02/06 职场文书
谢师宴家长答谢词
2015/09/30 职场文书
大学生安全教育心得体会
2016/01/15 职场文书