两行代码轻松搞定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 相关文章推荐
YUI 读码日记之 YAHOO.lang.is*
Mar 22 Javascript
兼容ie和firefox js关闭代码
Dec 11 Javascript
常用js字符串判断方法整理
Oct 18 Javascript
jquery easyui 对于开始时间小于结束时间的判断示例
Mar 22 Javascript
JQuery对表单元素的基本操作使用总结
Jul 18 Javascript
JS实现slide文字框缩放伸展效果代码
Nov 05 Javascript
JavaScript程序设计之JS调试
Dec 09 Javascript
jQuery插件FusionCharts实现的3D帕累托图效果示例【附demo源码】
Mar 25 jQuery
JavaScript装饰器函数(Decorator)实例详解
Mar 30 Javascript
JS实现根据数组对象的某一属性排序操作示例
Jan 14 Javascript
layui数据表格实现重载数据表格功能(搜索功能)
Jul 27 Javascript
jQuery插件实现图片轮播效果
Oct 19 jQuery
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新手上路(五)
2006/10/09 PHP
PHP中将网页导出为Word文档的代码
2012/05/25 PHP
thinkPHP框架自动填充原理与用法分析
2018/04/03 PHP
Laravel自动生成UUID,从建表到使用详解
2019/10/24 PHP
为JavaScript添加重载函数的辅助方法
2010/07/04 Javascript
jquery 学习之二 属性相关
2010/11/23 Javascript
用Javascript实现Windows任务管理器的代码
2012/03/27 Javascript
JS 删除字符串最后一个字符的实现代码
2014/02/20 Javascript
纯js和css实现渐变色包括静态渐变和动态渐变
2014/05/29 Javascript
jQuery.parseJSON(json)将JSON字符串转换成js对象
2014/07/27 Javascript
js实现按钮加背景图片常用方法
2014/11/01 Javascript
jQuery内容过滤选择器用法分析
2015/02/10 Javascript
JavaScript中常用的六种互动方法示例
2015/03/13 Javascript
JavaScript Split()方法
2015/12/18 Javascript
javascript关于继承解析
2016/05/10 Javascript
关于JS变量和作用域详解
2016/07/28 Javascript
深入浅析JS是按值传递还是按引用传递(推荐)
2016/09/18 Javascript
JS比较两个数值的大小实例
2016/11/25 Javascript
vue元素实现动画过渡效果
2017/07/01 Javascript
JS实现按钮添加背景音乐示例代码
2017/10/17 Javascript
使用Vue CLI创建typescript项目的方法
2019/08/09 Javascript
layui table 列宽百分比显示的实现方法
2019/09/28 Javascript
[01:38:19]夜魇凡尔赛茶话会 第五期
2021/03/11 DOTA
Python中的闭包总结
2014/09/18 Python
利用Python爬取微博数据生成词云图片实例代码
2017/08/31 Python
python3 爬取图片的实例代码
2018/11/06 Python
Python提取频域特征知识点浅析
2019/03/04 Python
python面向对象实现名片管理系统文件版
2019/04/26 Python
基于h5py的使用及数据封装代码
2019/12/26 Python
利用keras使用神经网络预测销量操作
2020/07/07 Python
浅谈如何使用python抓取网页中的动态数据实现
2020/08/17 Python
CSS3实现苹果手机解锁的字体闪亮效果示例
2021/01/05 HTML / CSS
社区志愿者心得体会
2014/01/03 职场文书
财务人员求职自荐书范文
2014/02/10 职场文书
2016春节慰问信范文
2015/03/25 职场文书
签证工作证明模板
2015/06/15 职场文书