两行代码轻松搞定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实现Sleep暂停功能代码
Sep 03 Javascript
Grid得到选择行数据的方法总结
Jan 17 Javascript
超级简单的jquery操作表格方法
Dec 15 Javascript
Jquery1.9.1源码分析系列(十五)动画处理之外篇
Dec 04 Javascript
你不知道的高性能JAVASCRIPT
Jan 18 Javascript
使用Sticky组件实现带sticky效果的tab导航和滚动导航的方法
Mar 22 Javascript
JS实现的计数排序与基数排序算法示例
Dec 04 Javascript
vue-router重定向不刷新问题的解决
Jun 25 Javascript
JavaScript之解构赋值的理解
Jan 30 Javascript
vue中created和mounted的区别浅析
Aug 13 Javascript
js实现橱窗展示效果
Jan 11 Javascript
vue自动添加浏览器兼容前后缀操作
Aug 13 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
PHP5.2中date()函数显示时间与北京时间相差8小时的解决办法
2009/05/28 PHP
PHP 程序员也要学会使用“异常”
2009/06/16 PHP
PHP 查找字符串常用函数介绍
2012/06/07 PHP
PHP从FLV文件获取视频预览图的方法
2015/03/12 PHP
PHP异常处理浅析
2015/05/12 PHP
PHP图形操作之Jpgraph学习笔记
2015/12/25 PHP
php接口技术实例详解
2016/12/07 PHP
详解Yaf框架PHPUnit集成测试方法
2017/12/27 PHP
PHP使用zlib扩展实现GZIP压缩输出的方法详解
2018/04/09 PHP
ThinkPHP5框架中使用JWT的方法示例
2020/06/03 PHP
高性能WEB开发 flush让页面分块,逐步呈现 flush让页面分块,逐步呈现
2010/06/19 Javascript
Js判断参数(String,Array,Object)是否为undefined或者值为空
2013/11/04 Javascript
理解JS事件循环
2016/01/07 Javascript
javascript数组去重小结
2016/03/07 Javascript
JavaScript学习小结之被嫌弃的eval函数和with语句实例详解
2016/08/01 Javascript
Jquery 整理元素选取、常用方法一览表
2016/11/26 Javascript
vue实现页面加载动画效果
2017/09/19 Javascript
Javascript实现运算符重载详解
2018/04/07 Javascript
JS/HTML5游戏常用算法之路径搜索算法 随机迷宫算法详解【普里姆算法】
2018/12/13 Javascript
微信小程序自定义头部导航栏和导航栏背景图片 navigationStyle问题
2019/07/26 Javascript
[00:09]DOTA2新版本PA至宝特效动作展示
2014/11/19 DOTA
Python3中常用的处理时间和实现定时任务的方法的介绍
2015/04/07 Python
Python的__builtin__模块中的一些要点知识
2015/05/02 Python
python rsa 加密解密
2017/03/20 Python
Python 列表(List) 的三种遍历方法实例 详解
2017/04/15 Python
Python读取和处理文件后缀为.sqlite的数据文件(实例讲解)
2017/06/27 Python
python如何将图片转换为字符图片
2020/08/19 Python
Python堆排序原理与实现方法详解
2018/05/11 Python
浅谈pytorch 模型 .pt, .pth, .pkl的区别及模型保存方式
2020/05/25 Python
美国维生素、补充剂、保健食品购物网站:Vitacost
2016/08/05 全球购物
英国灯具和灯泡网上商店:Lights.co.uk
2018/02/02 全球购物
毕业求职自荐信格式是什么
2013/11/19 职场文书
公务员培训心得体会
2013/12/28 职场文书
2014年政务公开工作总结
2014/12/09 职场文书
2015年度残疾人工作总结
2015/05/14 职场文书
background-position百分比原理详解
2021/05/08 HTML / CSS