两行代码轻松搞定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
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
热门推荐
10 新人红包祝福语简短精辟
11 幼师给毕业祝福语简短
12 生日高考祝福语妹妹简短
13 下飞机祝福语简短英文
14 元宵发客户祝福语简短
15 爸妈金婚文案祝福语简短
16 新郎朋友红包祝福语简短
17 虎年五一祝福语大全简短
18 出阁宴祝福语姐姐简短