两行代码轻松搞定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实现metro效果示例代码
Sep 06 Javascript
每天一篇javascript学习小结(属性定义方法)
Nov 19 Javascript
微信小程序 location API实例详解
Oct 02 Javascript
详解vue 中使用 AJAX获取数据的方法
Jan 18 Javascript
canvas绘制一个常用的emoji表情
Mar 30 Javascript
原生JS实现ajax与ajax的跨域请求实例
Dec 01 Javascript
使用Vue.js开发微信小程序开源框架mpvue解析
Mar 20 Javascript
vue进入页面时滚动条始终在底部代码实例
Mar 26 Javascript
微信小程序中转义字符的处理方法
Mar 28 Javascript
JS获取动态添加元素的方法详解
Jul 31 Javascript
Node.JS获取GET,POST数据之queryString模块使用方法详解
Feb 06 Javascript
使用vue cli4.x搭建vue项目的过程详解
May 08 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 fputcsv命令 写csv文件遇到的小问题(多维数组连接符)
2011/05/24 PHP
浅析get与post的一些特殊情况
2014/07/28 PHP
thinkPHP模板中函数的使用方法示例
2016/11/30 PHP
PHP echo()函数讲解
2019/02/15 PHP
JS类库Bindows1.3中的内存释放方式分析
2007/03/08 Javascript
实现超用户体验 table排序javascript实现代码
2009/06/22 Javascript
JavaScript 未结束的字符串常量常见解决方法
2010/01/24 Javascript
javascript 回调函数详解
2014/11/11 Javascript
使用Object.defineProperty实现简单的js双向绑定
2016/04/15 Javascript
基于javascript实现最简单的选项卡切换效果
2016/05/16 Javascript
jquery中live()方法和bind()方法区别分析
2016/06/23 Javascript
Bootstrap源码解读模态弹出框(11)
2016/12/28 Javascript
jQuery扩展_动力节点Java学院整理
2017/07/05 jQuery
js is_valid_filename验证文件名的函数
2017/07/19 Javascript
浅析node Async异步处理模块用例分析及常用方法介绍
2017/11/17 Javascript
基于rollup的组件库打包体积优化小结
2018/06/18 Javascript
js实现无缝滚动双图切换效果
2019/07/09 Javascript
jQuery实现弹幕特效
2019/11/29 jQuery
JS实现鼠标按下拖拽效果
2020/07/23 Javascript
详解vite2.0配置学习(typescript版本)
2021/02/25 Javascript
一个计算身份证号码校验位的Python小程序
2014/08/15 Python
Python面向对象编程基础解析(二)
2017/10/26 Python
Python实现简单的语音识别系统
2017/12/13 Python
如何优雅地处理Django中的favicon.ico图标详解
2018/07/05 Python
与Django结合利用模型对上传图片预测的实例详解
2019/08/07 Python
Python学习笔记之列表推导式实例分析
2019/08/13 Python
redis数据库及与python交互用法简单示例
2019/11/01 Python
15行Python代码实现免费发送手机短信推送消息功能
2020/02/27 Python
python 利用matplotlib在3D空间中绘制平面的案例
2021/02/06 Python
打架检讨书800字
2014/01/10 职场文书
营销学习心得体会
2014/09/12 职场文书
群众路线教育实践活动心得体会(四风)
2014/11/03 职场文书
2016感恩父亲节主题广播稿
2015/12/18 职场文书
优秀员工演讲稿
2019/06/21 职场文书
Python+SeaTable实现计算两个日期间的工作日天数
2022/07/07 Python
js基于div丝滑实现贝塞尔曲线
2022/09/23 Javascript