两行代码轻松搞定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 相关文章推荐
mysql输出数据赋给js变量报unterminated string literal错误原因
May 22 Javascript
基于jquery的web页面日期格式化插件
Nov 15 Javascript
json格式的时间显示为正常年月日的方法
Sep 08 Javascript
使用jQuery快速解决input中placeholder值在ie中无法支持的问题
Jan 02 Javascript
AngularJS入门教程之Hello World!
Dec 06 Javascript
JS上传组件FileUpload自定义模板的使用方法
May 10 Javascript
BootStrap Validator 版本差异问题导致的submitHandler失效问题的解决方法
Dec 01 Javascript
基于Bootstrap的网页设计实例
Mar 01 Javascript
Angular中支持SCSS的方法
Nov 18 Javascript
JavaScript中Object基础内部方法图
Feb 05 Javascript
Layui实现数据表格默认全部显示(不要分页)
Oct 26 Javascript
解决Nuxt使用axios跨域问题
Jul 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
将兴奋、喜悦和坎加斯带到戴安娜:亚马逊公主
2020/03/03 欧美动漫
一步一步学习PHP(8) php 数组
2010/03/05 PHP
PHP+swoole实现简单多人在线聊天群发
2016/01/19 PHP
php使用ffmpeg向视频中添加文字字幕的实现方法
2016/05/23 PHP
Aster vs KG BO3 第二场2.18
2021/03/10 DOTA
JavaScript的类型简单说明
2010/09/03 Javascript
JS实现模仿微博发布效果实例代码
2013/12/16 Javascript
js控制input框只读实现示例
2014/01/20 Javascript
JavaScript中的数组操作介绍
2014/12/30 Javascript
jQuery插件boxScroll实现图片轮播特效
2015/07/14 Javascript
CSS javascript 结合实现悬浮固定菜单效果
2015/08/23 Javascript
js实现日历的简单算法
2017/01/24 Javascript
JS常用倒计时代码实例总结
2017/02/07 Javascript
微信小程序实现顶部选项卡(swiper)
2020/06/19 Javascript
详解node服务器中打开html文件的两种方法
2017/09/18 Javascript
vue中filters 传入两个参数 / 使用两个filters的实现方法
2019/07/15 Javascript
js操作两个json数组合并、去重,以及删除某一项元素
2020/09/22 Javascript
基于p5.js 2D图像接口的扩展(交互实现)
2020/11/30 Javascript
Python实现识别手写数字 简易图片存储管理系统
2018/01/29 Python
详解Python 数据库的Connection、Cursor两大对象
2018/06/25 Python
使用python实现快速搭建简易的FTP服务器
2018/09/12 Python
python多进程控制学习小结
2018/10/31 Python
Python文件循环写入行时防止覆盖的解决方法
2018/11/09 Python
新年快乐! python实现绚烂的烟花绽放效果
2019/01/30 Python
PythonWeb项目Django部署在Ubuntu18.04腾讯云主机上
2019/04/01 Python
Python实现的ftp服务器功能详解【附源码下载】
2019/06/26 Python
pytorch读取图像数据转成opencv格式实例
2020/06/02 Python
如何在Python3中使用telnetlib模块连接网络设备
2020/09/21 Python
详解HTML5 LocalStorage 本地存储
2016/12/23 HTML / CSS
深入剖析HTML5 内联框架iFrame
2016/05/04 HTML / CSS
linux面试题参考答案(8)
2015/08/11 面试题
师范生实习个人的自我评价
2013/09/28 职场文书
秋冬农业生产标语
2014/10/09 职场文书
2014年银行个人工作总结
2014/12/05 职场文书
幽默导游词开场白
2015/05/29 职场文书
以MySQL5.7为例了解一下执行计划
2022/04/13 MySQL