两行代码轻松搞定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 相关文章推荐
jquery 表单取值常用代码
Dec 22 Javascript
jQueryPad 实用的jQuery测试工具(支持IE,chrome,FF)
May 22 Javascript
基于jQuery的仿flash的广告轮播代码
Nov 04 Javascript
JS+CSS实现Div弹出窗口同时背景变暗的方法
Mar 04 Javascript
Bootstrap carousel轮转图的使用实例详解
May 17 Javascript
javascript设计模式之module(模块)模式
Aug 19 Javascript
AngularJS轻松实现双击排序的功能
Aug 30 Javascript
JavaScript中toLocaleString()和toString()的区别实例分析
Aug 14 Javascript
谈谈为什么你的 JavaScript 代码如此冗长
Jan 30 Javascript
vue 弹窗时 监听手机返回键关闭弹窗功能(页面不跳转)
May 10 Javascript
详解VUE调用本地json的使用方法
May 15 Javascript
Vue组件基础用法详解
Feb 05 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 empty,isset,is_null判断比较(差异与异同)
2010/10/19 PHP
PHP原生模板引擎 最简单的模板引擎
2012/04/25 PHP
php 创建以UNIX时间戳命名的文件夹(示例代码)
2014/03/08 PHP
PHP中模拟处理HTTP PUT请求的例子
2014/07/22 PHP
PHP实现动态执行代码的方法
2016/03/25 PHP
PHP文件与目录操作示例
2016/12/24 PHP
PHP封装的简单连接MongoDB类示例
2019/02/13 PHP
laravel框架的安装与路由实例分析
2019/10/11 PHP
JavaScript 捕获窗口关闭事件
2009/07/26 Javascript
jQuery 动态酷效果实现总结
2009/12/27 Javascript
基于jQuery的实现简单的分页控件
2010/10/10 Javascript
jquery 读取页面load get post ajax 四种方式代码写法
2011/04/02 Javascript
JS判断元素为数字的奇异写法分享
2012/08/01 Javascript
使用js实现关闭js弹出层的窗口
2014/02/10 Javascript
JS实现超炫网页烟花动画效果的方法
2015/03/02 Javascript
全面解析Bootstrap排版使用方法(标题)
2015/11/30 Javascript
JavaScript中cookie工具函数封装的示例代码
2016/10/11 Javascript
常见的浏览器Hack技巧整理
2017/06/29 Javascript
vue中如何让子组件修改父组件数据
2018/06/14 Javascript
vue缓存的keepalive页面刷新数据的方法
2019/04/23 Javascript
koa+jwt实现token验证与刷新功能
2019/05/30 Javascript
了解JavaScript函数中的默认参数
2019/05/30 Javascript
Vue+Typescript中在Vue上挂载axios使用时报错问题
2019/08/07 Javascript
[47:39]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 LGD vs OPTIC
2018/03/31 DOTA
Python 变量类型及命名规则介绍
2013/06/08 Python
详解用Python实现自动化监控远程服务器
2019/05/18 Python
处理python中多线程与多进程中的数据共享问题
2019/07/28 Python
Python利用Pillow(PIL)库实现验证码图片的全过程
2020/10/04 Python
String s = new String(“xyz”);创建了几个String Object?
2015/08/05 面试题
PyQt 如何创建自定义QWidget
2021/03/24 Python
带薪年假请假条
2014/02/04 职场文书
财务管理专业毕业生求职信
2014/06/02 职场文书
单方离婚协议书范本(2014版)
2014/09/30 职场文书
离婚协议书标准格式
2014/10/04 职场文书
电影红河谷观后感
2015/06/11 职场文书
JS一分钟在github+Jekyll的博客中添加访问量功能的实现
2021/04/03 Javascript