两行代码轻松搞定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 创建对象和构造类实现代码
Jul 30 Javascript
Javascript实现仿WebQQ界面的“浮云”兼容 IE7以上版本及FF
Apr 27 Javascript
javascript中普通函数的使用介绍
Dec 19 Javascript
jquery动态改变div宽度和高度
Feb 09 Javascript
js实现商品抛物线加入购物车特效
Nov 18 Javascript
BootStrap selectpicker
Jun 20 Javascript
获取input标签的所有属性的方法
Jun 28 Javascript
html5+canvas实现支持触屏的签名插件教程
May 08 Javascript
JavaScript多态与封装实例分析
Jul 27 Javascript
前端天气插件tpwidget使用方法详解
Jun 24 Javascript
JS如何操作DOM基于表格动态展示数据
Oct 15 Javascript
antd-日历组件,前后禁止选择,只能选中间一部分的实例
Oct 29 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将会员数据导入到ucenter的代码
2010/07/18 PHP
PHP中图片等比缩放的实例
2013/03/24 PHP
ThinkPHP3.1新特性之内容解析输出详解
2014/06/19 PHP
共享自己写一个框架DreamScript
2007/01/20 Javascript
COM中获取JavaScript数组大小的代码
2009/11/22 Javascript
jquery实现文本框鼠标右击无效以及不能输入的代码
2010/11/05 Javascript
cookie的复制与使用记住用户名实现代码
2013/11/04 Javascript
Node.js编码规范
2014/07/14 Javascript
javascript检测两个数组是否相似
2015/05/19 Javascript
在JavaScript中操作时间之getMonth()方法的使用
2015/06/10 Javascript
JavaScript设计模式之代理模式详解
2017/06/09 Javascript
js实现鼠标跟随运动效果
2020/08/02 Javascript
JavaScript实现单击网页任意位置打开新窗口与关闭窗口的方法
2017/09/21 Javascript
深入理解node.js http模块
2018/01/24 Javascript
node+express框架中连接使用mysql(经验总结)
2018/11/10 Javascript
bootstrap与pagehelper实现分页效果
2018/12/29 Javascript
Vue.js+cube-ui(Scroll组件)实现类似头条效果的横向滚动导航条
2019/06/24 Javascript
echarts大屏字体自适应的方法步骤
2019/07/12 Javascript
Webpack中loader打包各种文件的方法实例
2019/09/03 Javascript
小程序新版订阅消息模板消息
2019/12/31 Javascript
JS实现简单日历特效
2020/01/03 Javascript
Vue 3.0 全家桶抢先体验
2020/04/28 Javascript
[02:37]2015国际邀请赛选手档案—LGD.Xiao8
2015/07/28 DOTA
用Python实现换行符转换的脚本的教程
2015/04/16 Python
Python中数字以及算数运算符的相关使用
2015/10/12 Python
配置python的编程环境之Anaconda + VSCode的教程
2020/03/29 Python
django rest framework 过滤时间操作
2020/07/12 Python
tensorflow与numpy的版本兼容性问题的解决
2021/01/08 Python
html5的localstorage详解
2017/05/09 HTML / CSS
使用HTML5的表单验证的简单示例
2015/09/09 HTML / CSS
10条PHP编程习惯
2014/05/26 面试题
迎八一活动主题
2014/01/31 职场文书
淘宝客服专员岗位职责
2014/04/11 职场文书
安全资料员岗位职责范本
2014/06/28 职场文书
一份文言文检讨书
2014/09/13 职场文书
Python OpenCV超详细讲解调整大小与图像操作的实现
2022/04/02 Python