两行代码轻松搞定JavaScript日期验证_javascript技巧

我们通常在 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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索js
日期验证
轻松搞定extjs、轻松搞定高中数学、轻轻松松搞定高考、韩顺平轻松搞定网页、轻松搞定网页设计笔记,以便于您获取更多的相关知识。

时间: 2024-11-01 01:59:21

两行代码轻松搞定JavaScript日期验证_javascript技巧的相关文章

js两行代码按指定格式输出日期时间_javascript技巧

复制代码 代码如下: // <summary> // 格式化显示日期时间 // </summary> // <param name="x">待显示的日期时间,例如new Date()</param> // <param name="y">需要显示的格式,例如yyyy-MM-dd hh:mm:ss</param> function date2str(x,y) { var z ={y:x.getFu

JavaScript 一行代码,轻松搞定浮动快捷留言-V2升级版_javascript技巧

前天熬了大半宿发了一篇[一行代码轻松搞定快捷留言功能],同时发布了V1.0beta版的快捷留言功能和源代码,之所以是beta版,就是当时感觉虽然基本功能有了,但是还不够完善,特性也不一定合理,今天不知不觉又弄到了这个时候,这次对上一版做了很大改进: 首先,原来自动提交留言信息的同时会自动推荐,大量的推荐数,直接影响了博客园的推荐排名机制,所以后来在第一时间修改成了询问是否要推荐的交互模式! 其次,虽然快捷功能有了,并且很好用,但是满屏幕的"好贴!我顶你!"也确实有些审美疲劳了,并且没什

几行代码轻松搞定网页的简繁转换

简繁转换|网页 对网页进行简繁字体转换的方法一般有两种:一是使用<简繁通>这样的专业软件,另外一种是制作两套版本的网页.显然,这两种方法都较为麻烦,而且专业软件一般不能用于免费的空间.笔者在这里给大家提供一个非常简单的方法,只须在页面上添加几行代码就可以轻松搞定网页的简繁转换了.首先在http://www.knowsky.com/download/transform.js处下载用于简繁转换的js文件transform.js,复制到网站目录下,然后使用网页制作工具打开需要进行简繁转换的网页,

BootstrapTable+KnockoutJS相结合实现增删改查解决方案(三)两个Viewmodel搞定增删改查_javascript技巧

前言:之前博主分享过knockoutJS和BootstrapTable的一些基础用法,都是写基础应用,根本谈不上封装,仅仅是避免了html控件的取值和赋值,远远没有将MVVM的精妙展现出来.最近项目打算正式将ko用起来,于是乎对ko和bootstraptable做了一些封装,在此分享出来供园友们参考.封装思路参考博客园大神萧秦,如果园友们有更好的方法,欢迎讨论. KnockoutJS系列文章: BootstrapTable与KnockoutJS相结合实现增删改查功能[一] BootstrapTa

javascript密码验证_javascript技巧

本文为大家分享了javascript密码验证的实现方法,欢迎大家阅读.         javascript密码验证代码如下 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>密码验证</title> <script src="js/jquery-1.11.1.js"><

几行代码轻松搞定jquery实现flash8类似的连接效果_jquery

很简单几行代码就可以实现整个页面的连接效果.  复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  <html xmlns="http://www.w3.org/1999/xhtml">  <head&g

用最通俗易懂的代码帮助新手理解javascript闭包 推荐_javascript技巧

最近看了几篇有关javascript闭包的文章,包括最近正火的汤姆大叔系列,还有<javascript高级程序设计>中的文章,--我看不懂,里面有些代码是在大学教科书中看都没看过的,天书一般.幸好最近遇到两本好书<ppk on javascript>和<object-oriented JavaScript>,正字阅读中,后者还没有中文版,但前者还是建议看原版,写的不复杂,有兴趣的朋友可以看看,适合想进阶的朋友. 今天就结合这两本书,用最浅显的语言和最通俗的方式谈谈jav

轻松5句话解决JavaScript的作用域_javascript技巧

javascript 程序的每一个字节都是在这个或那个运行上下文(execution context)中执行的.你可以把这些上下文想象为代码的邻居,它们可以给每一行代码指明:从何处来,朋友和邻居又是谁.没错,这是很重要的信息,因为 javascript社会有相当严格的规则,规定谁可以跟谁交往.运行上下文则是有大门把守的社区而非其内开放的小门. 我们通常可以把这些社会边界称为作用域,并且有充足的重要性在每一位邻居的宪章里立法,而这个宪章就是我们要说的上下文的作用域链(scope chain).在特

轻松搞定js表单验证_javascript技巧

先看看效果图: html: 引入 <script src="/Scripts/jquery-1.10.2.js"></script> <script src="/Scripts/Validate-1.0.1.js"></script> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head ru