两行代码轻松搞定JavaScript日期验证
我们通常在JavaScript中验证日期,基本的思路大概是,先判断年月日是否有效,再判断当月是否有当日,比如一些月份没有31日,平年二月没有29、30日,闰年二月没有30日等等。
偶然间发现一个技巧,能判断以上所有的情况。除去赋值代码,实际代码仅两行。
其实这个技巧也很简单,通过实例化Date对象来生成一个合法的日期,再去对比年月日是否相等,以验证日期是否合法。
varoriginalYear=2016; varoriginalMonth=12; varoriginalDay=32; vardate=newDate(originalYear,originalMonth-1,originalDay); varyear=date.getFullYear(); varmonth=date.getMonth()+1; varday=date.getDate(); console.log(year+'-'+month+'-'+day);//2017-1-1
因为12月没有32日,所以输出的日期就是第二年的1月1日,年月日不相等,所以2016年12月32日不是一个合法的日期。
具体的实现代码:
varvalidateDate=function(originalYear,originalMonth,originalDay){ vardate=newDate(originalYear,originalMonth-1,originalDay); varyear=date.getFullYear(); varmonth=date.getMonth()+1; varday=date.getDate(); returnyear==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
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。