xml地图|网站地图|网站标签 [设为首页] [加入收藏]

JavaScript:时间日期格式验证大全

时间:2020-01-04 21:39来源:计算机
JavaScript:时间日期格式验证大全 * 校验是或不是为YYYY-MM-DD 日期格式 * 校验是或不是为YYYY-MM-DD HH:mm 日期+时分格式 * 校验是还是不是为YYYY-MM-DD HH:mm:ss 日期+时分秒格 * 校验是还是不是为

JavaScript:时间日期格式验证大全

* 校验是或不是为YYYY-MM-DD 日期格式
* 校验是或不是为YYYY-MM-DD HH:mm 日期+时分格式
* 校验是还是不是为YYYY-MM-DD HH:mm:ss 日期+时分秒格
* 校验是还是不是为HH:mm:ss 时分秒格式
* 校验是不是为HH:mm 时分格

先看多少个例子:

 

<script language=javascript> function validateDateFormart(thi) { var dateStr=thi.value; var expireDateCode = validateYYYYMMDD(dateStr); if(expireDateCode!='success'卡塔尔 { alert(getErrorMsg(expireDateCode,'','YYYYMMDD'State of Qatar卡塔尔; } else { dateStr=addHRToStr(dateStr卡塔尔(قطر‎; alert(dateStr卡塔尔国; } } var success = 'success'; //校验成功 var failure = 'failure'; //校验失利 var dateStrNull = 'dateStrNull'; //日期字符串为空 var formatError = formatError; //不切合格式 var lengthLt8 = lengthLt8; //长度小于8 var monthLT1 = 'monthLT1'; //月份不可能小于1 var monthGT12 = 'monthGT12'; //月份大于12 var dayGT28 = 'dayGT28'; //日期大于28 var dayGT29 = 'dayGT29'; //日期大于29 var dayGT30 = 'dayGT30'; //日期大于30 var dayGT31 = 'dayGT31'; //日期大于31 var dayLT1 = 'dayLT1'; //日期小于1 var hour24System = '24'; //接收24钟头制 var hour12System = '12'; //采取12小时制 var hourGT23 = 'hourGT23'; //时辰大于23 var hourGT11 = 'hourGT11'; //小时大于11 var minuteGT59 = 'minuteGT59'; //秒钟大于59 var secondGT59 = 'secondGT59'; //分钟大于59 var dateCompare = 'date'; //相比较年月日 var dateTimeCompare = 'dateTime'; //比较年月日依旧时分秒或然持有 var timeCompare = 'time'; //比较年时分秒 var dateTimeGTNow = 'dateTimeGTNow'; //大于当二〇意气风发五年月日要么时分秒只怕有所 var dateTimeLTNow = 'dateTimeLTNow'; //小于当二〇后生可畏五年月日或许时分秒可能具有var equality = 'equality'; //时间相等 //时间格式的正则表明式 var YYYYMMDDReg = /[d]{4}[/-]{1}[d]{1,2}[/-]{1}[d]{1,2}/g; /** * 校验是不是为YYYY-MM-DD 日期格式 * @param dateStr 时间字符串 * @returns */ function validateYYYYMMDD(dateStr卡塔尔国{ //假使日期字符串为空 if(strIsNull(dateStr卡塔尔(قطر‎State of Qatar{ return dateStrNull; } //假诺小于8位 if(dateStr.length < 8卡塔尔(قطر‎{ return lengthLt8; } dateStr = addHRToStr(dateStr卡塔尔国; var regResult = dateStr.replace(YYYYMMDDReg,''卡塔尔(قطر‎; //符合格式 if(regResult==''卡塔尔{ var line_one = dateStr.indexOf('-'卡塔尔国; //获取第叁个横- var line_two = dateStr.lastIndexOf('-'卡塔尔(قطر‎; //获取第一个横- var year_str = dateStr.substring(0,line_one); //获取年 var month_str = dateStr.substring(line_one+1,line_two); //获取月 var day_str = dateStr.substring(line_two+1State of Qatar; //获取日 //调换到数字格式 var year_num = getIntValue(year_str); var month_num = getIntValue(month_str); var day_num = getIntValue(day_strState of Qatar; //校验月份 var monthResult = validateMonth(month_num); if(monthResult!=success卡塔尔{ return monthResult; } //假设日期小于1 if(day_num<1卡塔尔国{ return dayLT1; } //校验日期 return validateDay(year_num,month_num,day_num); }else{ return formatError; } return failure; } /** * 加多横线到日期的格式 * @param oldStr * @returns {String} */ function addHRToStr(oldStr卡塔尔{ //如若存在-大概/ if(oldStr.indexOf('-'卡塔尔国>=0 || oldStr.indexOf('/'State of Qatar>=0卡塔尔(قطر‎{ return oldStr; } //要是小于6恐怕当先8 if(oldStr.length != 8 ){ return oldStr; } var idx1 = 4; var idx2 = 6; if(oldStr.length == 6){ idx2 = 5; }else if(oldStr.length == 7){ idx2 = 6; } var newStr = oldStr.substring(0,4) +

    • oldStr.substring(4,idx2) + - + oldStr.substring(idx2); return newStr; } /** * 校验是不是超越当前时刻(自动物检疫验传入的岁月格式卡塔尔国 * @param dateStr * @returns */ function isMorethanNow(dateStr卡塔尔{ var result = 'equals'; //假若是YYYY-MM-DD if(dateStr.replace(YYYYMMDDReg,''State of Qatar==''卡塔尔(قطر‎{ result = compareNow(dateStr,dateCompare卡塔尔国; //假若是YYYY-MM-DD HH:mm:ss }else if(dateStr.replace(YYYYMMDDHHmmssReg,''State of Qatar==''卡塔尔国{ result = compareNow(dateStr,dateTimeCompare卡塔尔国; //如若是YYYY-MM-DD HH:mm }else if(dateStr.replace(YYYYMMDDHHmmReg,''卡塔尔(قطر‎==''卡塔尔(قطر‎{ result = compareNow(dateStr+:59,dateTimeCompare卡塔尔(قطر‎; //借使是HH:mm:ss }else if(dateStr.replace(HHmmssReg,''卡塔尔==''卡塔尔{ result = compareNow(dateStr,timeCompare卡塔尔; //要是是HH:mm }else if(dateStr.replace(HHmmReg,''卡塔尔==''卡塔尔{ result = compareNow(dateStr+:59,timeCompareState of Qatar; } //假诺大于 if(result == dateTimeGTNow卡塔尔{ return 'true'; }else if(result == dateTimeLTNow卡塔尔国{ return 'false'; }else{ return 'equals'; } } /** * 相比当前的日期或然时间(日期,时间卡塔尔(قطر‎ * @param dateStr * @param compareType 比较艺术 date,time,dateTime (暗中认可比较年月日卡塔尔(قطر‎ */ function compareNow(dateStr,compareType卡塔尔国{ //借使比较艺术为空 if(strIsNull(compareType卡塔尔卡塔尔(قطر‎{ compareType = dateCompare; } //获取当明天子 var now = new Date(State of Qatar; //比较日期 if(compareType == dateCompareState of Qatar{ var nowDate = new Date(now.getFullYear(卡塔尔+'/'+(now.getMonth(卡塔尔+1卡塔尔国+'/'+now.getDate(State of Qatar卡塔尔国; var fd_date = new Date(dateStr.replace(/-/g,'/')); if(fd_date>nowDate){ return dateTimeGTNow; }else if(fd_datenow){ return dateTimeGTNow; }else if(fd_datenowTimeStr){ return dateTimeGTNow; }else if(dateStrNoSpace12){ return monthGT12; }else if(month_num<1){ return monthLT1; } return success; } /** * 校验日期是还是不是合法 * @param year_num 年份 * @param month_num 月份 * @param day_num 日期 * @returns */ function validateDay(year_num,month_num,day_num){ if(day_num<1State of Qatar{ return dayLT1; //若是月份是1,3,5,7,8,10,12 }else if((month_num==1||month_num==3||month_num==5||month_num==7 ||month_num==8||month_num==10||month_num==12)&&day_num>31State of Qatar{ return dayGT31; //如若月份是4,6,9,11 }else if((month_num==4||month_num==6||month_num==9||month_num==11) &&day_num>30卡塔尔(قطر‎{ return dayGT30; //即使月份是2 }else if(month_num==2State of Qatar{ //如若为闰年 if(isLeapYear(year_num)&&day_num>29){ return dayGT29; }else if(day_num>28){ return dayGT28; } } return success; } /** * 校验是不是为闰年 * @param year_num * @returns */ function isLeapYear(year_num){ /*年度为4的倍数不肯定是闰年 * (1State of Qatar年份不是100的翻番但是4的翻番都以闰年 * (2State of Qatar年份是400的翻番的年度是闰年 (如1901年不是闰年,而贰零零壹年是闰年State of Qatar */ return year_num%4==0&&(year_num%100!=0||year_num%400==0); } /** * 校验小时 * @param hourSys 小时制 * @param hour_num * @returns */ function validateHour(hour_num,hourSys){ //24小时制 if(hourSys == hour24System&&hour_num > 23){ return hourGT23; //12小时制 }else if(hourSys == hour12System&&hour_num > 11){ return hourGT11; } return success; } /** * 校验分钟 * @param minute_num * @returns */ function validateMinute(minute_numState of Qatar{ //如若小时当先24 if(minute_num>59){ return minuteGT59; } return success; } /** * 校验分钟 * @param second_num * @returns */ function validateSecond(second_numState of Qatar{ //如若小时超越24 if(second_num>59){ return secondGT59; } return success; } /** * 依据字符串获取整数值 * @param str * @returns */ function getIntValue(str){ if(strIsNull(str)){ return 0; } return str.replace(/^0+/g,''); } /** * 字符串是或不是为空 * @param dateStr */ function strIsNull(str){ if(str!=null &&str.replace(/(^s*)|(s*$)/g,'').length>0){ return false; } return true; } /** * 获得错误的晋升消息 * @param errCode 错误码 * @param controlName 控件名 * @param format 格式 */ function getErrorMsg(errCode,controlName,format卡塔尔国{ if(errCode == dateStrNull卡塔尔国{ return controlName+'不能够为空'; }else if(errCode == formatErrorState of Qatar{ return controlName+'请按日期格式''+format+''输入'; }else if(errCode == lengthLt8State of Qatar{ return controlName+'请按日期格式'YYYYMMDD'输入'; }else if(errCode == monthLT1卡塔尔(قطر‎{ return controlName+'填写的月份有误,月份不可能小于1'; }else if(errCode == monthGT12卡塔尔(قطر‎{ return controlName+'填写的月度有误,月份不能超过12'; }else if(errCode == dayLT1卡塔尔{ return controlName+'填写的日子有误,日期不可能小于1'; }else if(errCode == dayGT28卡塔尔国{ return controlName+'填写的日期有误,平年的十二月份日子无法胜过28'; }else if(errCode == dayGT29卡塔尔国{ return controlName+'填写的日期有误,闰年的5月份日子不能够超过29'; }else if(errCode == dayGT30State of Qatar{ return controlName+'填写的日期有误,月份为4,6,9,11时,日期不能够压倒30'; }else if(errCode == dayGT31卡塔尔{ return controlName+'填写的日期有误,月份为1,3,5,7,8,10,12时,日期不能够超过31'; }else if(errCode == hourGT23State of Qatar{ return controlName+'填写的钟点有误,24小时制的时辰数不可能凌驾23'; }else if(errCode == hourGT11State of Qatar{ return controlName+'填写的时辰有误,12时辰制的时辰数无法超过11'; }else if(errCode == minuteGT59State of Qatar{ return controlName+'填写的分有误,分钟数无法赶过59'; }else if(errCode == secondGT59卡塔尔国{ return controlName+'填写的秒有误,分钟数不能超过59'; }else if(errCode == dateGTNow卡塔尔{ return controlName+'填写日期有误,不能够压倒当前不久子'; }else if(errCode == dateLTNow卡塔尔(قطر‎{ return controlName+'填写日期有误,不可能小于超越天子'; }else if(errCode == timeGTNowState of Qatar{ return controlName+'填写时间有误,不能够超过当前时光'; }else if(errCode == timeLTNowState of Qatar{ return controlName+'填写时间有误,无法小于当前时间'; }else if(errCode == failure 卡塔尔{ return controlName+'填写有误'; } } </script>时间:
      下面是常用的片段光阴日期格式验证Javascript代码:

 

 

// JavaScript Document
var success = 'success';         //校验成功
var failure = 'failure';         //校验失败
var dateStrNull = 'dateStrNull'; //日期字符串为空
var formatError = formatError; //不符合格式
var lengthLt8 = lengthLt8;     //长度小于8
var monthLT1  = 'monthLT1';    //月份不能小于1
var monthGT12 = 'monthGT12';   //月份大于12
var dayGT28 = 'dayGT28';       //日期大于28
var dayGT29 = 'dayGT29';       //日期大于29
var dayGT30 = 'dayGT30';       //日期大于30
var dayGT31 = 'dayGT31';       //日期大于31
var dayLT1 = 'dayLT1';         //日期小于1
var hour24System = '24';       //采用24小时制
var hour12System = '12';       //采用12小时制
var hourGT23 = 'hourGT23';     //小时大于23
var hourGT11 = 'hourGT11';     //小时大于11
var minuteGT59 = 'minuteGT59'; //分钟大于59
var secondGT59 = 'secondGT59'; //秒钟大于59
var dateCompare = 'date';   //比较年月日
var dateTimeCompare = 'dateTime'; //比较年月日或者时分秒或者所有
var timeCompare = 'time';   //比较年时分秒
var dateTimeGTNow = 'dateTimeGTNow';  //大于当前年月日或者时分秒或者所有
var dateTimeLTNow = 'dateTimeLTNow';  //小于当前年月日或者时分秒或者所有
var equality = 'equality';       //时间相等

//时间格式的正则表达式
var YYYYMMDDReg = /[d]{4}[/-]{1}[d]{1,2}[/-]{1}[d]{1,2}/g; 
var YYYYMMDDHHmmReg = /[d]{4}[/-]{1}[d]{1,2}[/-]{1}[d]{1,2}s[d]{1,2}[:][d]{1,2}/g;
var YYYYMMDDHHmmssReg = /[d]{4}[/-]{1}[d]{1,2}[/-]{1}[d]{1,2}s[d]{1,2}[:][d]{1,2}[:][d]{1,2}/g;
var HHmmssReg = /[d]{1,2}[:][d]{1,2}[:][d]{1,2}/g;
var HHmmReg = /[d]{1,2}[:][d]{1,2}/g;

/**
 * 校验是否为YYYY-MM-DD 日期格式
 * @param dateStr 时间字符串
 * @returns
 */
function validateYYYYMMDD(dateStr){
 //如果日期字符串为空
 if(strIsNull(dateStr)){
  return dateStrNull;
 }

 //如果小于8位
 if(dateStr.length < 8){
  return lengthLt8;
 }

 dateStr = addHRToStr(dateStr);

 var regResult = dateStr.replace(YYYYMMDDReg,'');
 //符合格式
 if(regResult==''){
  var line_one = dateStr.indexOf('-');       //获取第一个横-
  var line_two = dateStr.lastIndexOf('-');   //获取第二个横-

  var year_str = dateStr.substring(0,line_one);   //获取年
  var month_str = dateStr.substring(line_one+1,line_two); //获取月
  var day_str = dateStr.substring(line_two+1);  //获取日

  //转换成数字格式 
  var year_num = getIntValue(year_str);
  var month_num = getIntValue(month_str);
  var day_num = getIntValue(day_str);

  //校验月份
  var monthResult = validateMonth(month_num);
  if(monthResult!=success){
   return monthResult;
  }

  //如果日期小于1
  if(day_num<1){
   return dayLT1;
  }
  //校验日期
  return validateDay(year_num,month_num,day_num);
 }else{
  return formatError;
 }
 return failure;
}

/**
 * 校验是否为YYYY-MM-DD HH:mm 日期+时分格式
 * @param dateStr 时间字符串
 * @param hourSys 小时制(默认24小时制)
 * @returns
 */
function validateYYYYMMDDHHmm(dateStr,hourSys){
 //如果日期字符串为空
 if(strIsNull(dateStr)){
  return dateStrNull;
 }

 //如果小时制为空,则设置为24小时制
 if(strIsNull(hourSys)){
  hourSys = hour24System;
 }

 var regResult = dateStr.replace(YYYYMMDDHHmmReg,'');
 //符合格式
 if(regResult==''){
  var line_one = dateStr.indexOf('-');       //获取第一个横-
  var line_two = dateStr.lastIndexOf('-');   //获取第二个横-
  var space = dateStr.indexOf(' ');          //获取空格
  var colon_one = dateStr.indexOf(':');  //获取第一个冒号

  var year_str = dateStr.substring(0,line_one);   //获取年
  var month_str = dateStr.substring(line_one+1,line_two); //获取月
  var day_str = dateStr.substring(line_two+1,space);  //获取日
  var hour_str = dateStr.substring(space+1,colon_one); //获取小时
  var minute_str = dateStr.substring(colon_one+1);  //获取分钟

  //转换成数字格式 
  var year_num = getIntValue(year_str);
  var month_num = getIntValue(month_str);
  var day_num = getIntValue(day_str);

  var hour_num = getIntValue(hour_str);
  var minute_num = getIntValue(minute_str);

  //校验月份
  var monthResult = validateMonth(month_num);
  if(monthResult!=success){
   return monthResult;
  }

  //如果日期小于1
  if(day_num<1){
   return dayLT1;
  }
  //校验日期
  var dayResult = validateDay(year_num,month_num,day_num);
  if(dayResult!=success){
   return dayResult;
  }

  //校验小时
  var hourResult = validateHour(hour_num,hourSys);
  if(hourResult!=success){
   return hourResult;
  }

  return validateMinute(minute_num);
 }else{
  return formatError;
 }
 return failure;
}

/**
 * 校验是否为YYYY-MM-DD HH:mm:ss 日期+时分秒格式
 * @param dateStr 时间字符串
 * @param hourSys 小时制(默认24小时制)
 * @returns
 */
function validateYYYYMMDDHHmmss(dateStr,hourSys){
 //如果日期字符串为空
 if(strIsNull(dateStr)){
  return dateStrNull;
 }

 //如果小时制为空,则设置为24小时制
 if(strIsNull(hourSys)){
  hourSys = hour24System;
 }

 var regResult = dateStr.replace(YYYYMMDDHHmmssReg,'');
 //符合格式
 if(regResult==''){
  var line_one = dateStr.indexOf('-');       //获取第一个横-
  var line_two = dateStr.lastIndexOf('-');   //获取第二个横-
  var space = dateStr.indexOf(' ');          //获取空格
  var colon_one = dateStr.indexOf(':');      //获取第一个冒号
  var colon_two = dateStr.lastIndexOf(':');  //获取第二个冒号

  var year_str = dateStr.substring(0,line_one);   //获取年
  var month_str = dateStr.substring(line_one+1,line_two); //获取月
  var day_str = dateStr.substring(line_two+1,space);  //获取日

  var hour_str = dateStr.substring(space+1,colon_one); //获取小时
  var minute_str = dateStr.substring(colon_one+1,colon_two);  //获取分钟
  var second_st = dateStr.substring(colon_two+1);  //获取分钟

  //转换成数字格式 
  var year_num = getIntValue(year_str);
  var month_num = getIntValue(month_str);
  var day_num = getIntValue(day_str);

  var hour_num = getIntValue(hour_str);
  var minute_num = getIntValue(minute_str);
  var second_num = getIntValue(second_st);

  //校验月份
  var monthResult = validateMonth(month_num);
  if(monthResult!=success){
   return monthResult;
  }

  //如果日期小于1
  if(day_num<1){
   return dayLT1;
  }
  //校验日期
  var dayResult = validateDay(year_num,month_num,day_num);
  if(dayResult!=success){
   return dayResult;
  }

  //校验小时
  var hourResult = validateHour(hour_num,hourSys);
  if(hourResult!=success){
   return hourResult;
  }

  //校验分钟
  var minuteResult = validateMinute(minute_num);
  if(minuteResult!=success){
   return minuteResult;
  }

  //校验秒
  return validateSecond(second_num);
 }else{
  return formatError;
 }
 return failure;
}

/**
 * 校验是否为HH:mm:ss 时分秒格式
 * @param dateStr 时间字符串
 * @param hourSys 小时制(默认24小时制)
 * @returns
 */
function validateHHmmss(dateStr,hourSys){
 //如果日期字符串为空
 if(strIsNull(dateStr)){
  return dateStrNull;
 }

 //如果小时制为空,则设置为24小时制
 if(strIsNull(hourSys)){
  hourSys = hour24System;
 }

 var regResult = dateStr.replace(HHmmssReg,'');
 //符合格式
 if(regResult==''){
  var colon_one = dateStr.indexOf(':');      //获取第一个冒号
  var colon_two = dateStr.lastIndexOf(':');  //获取第二个冒号

  var hour_str = dateStr.substring(0,colon_one); //获取小时
  var minute_str = dateStr.substring(colon_one+1,colon_two);  //获取分钟
  var second_st = dateStr.substring(colon_two+1);  //获取分钟

  //转换成数字格式 
  var hour_num = getIntValue(hour_str);
  var minute_num = getIntValue(minute_str);
  var second_num = getIntValue(second_st);

  //校验小时
  var hourResult = validateHour(hour_num,hourSys);
  if(hourResult!=success){
   return hourResult;
  }

  //校验分钟
  var minuteResult = validateMinute(minute_num);
  if(minuteResult!=success){
   return minuteResult;
  }

  //校验秒
  return validateSecond(second_num);
 }else{
  return formatError;
 }
 return failure;
}

/**
 * 校验是否为HH:mm 时分格式
 * @param dateStr 时间字符串
 * @param hourSys 小时制(默认24小时制)
 * @returns
 */
function validateHHmm(dateStr,hourSys){
 //如果日期字符串为空
 if(strIsNull(dateStr)){
  return dateStrNull;
 }

 //如果小时制为空,则设置为24小时制
 if(strIsNull(hourSys)){
  hourSys = hour24System;
 }

 var regResult = dateStr.replace(HHmmReg,'');
 //符合格式
 if(regResult==''){
  var colon_one = dateStr.indexOf(':');      //获取第一个冒号
  var hour_str = dateStr.substring(0,colon_one); //获取小时
  var minute_str = dateStr.substring(colon_one+1);  //获取分钟

  //转换成数字格式 
  var hour_num = getIntValue(hour_str);
  var minute_num = getIntValue(minute_str);

  //校验小时
  var hourResult = validateHour(hour_num,hourSys);
  if(hourResult!=success){
   return hourResult;
  }

  //校验分钟
  return validateMinute(minute_num);
 }else{
  return formatError;
 }
 return failure;
}

/**
 * 添加横线到日期的格式
 * @param oldStr
 * @returns {String}
 */
function addHRToStr(oldStr){
 //如果存在-或者/
 if(oldStr.indexOf('-')>=0 || oldStr.indexOf('/')>=0){
  return oldStr;
 }

 //如果小于6或者大于8
 if(oldStr.length != 8 ){
  return oldStr;
 }

 var idx1 = 4;
 var idx2 = 6;

 if(oldStr.length == 6){
  idx2 = 5;
 }else if(oldStr.length == 7){
  idx2 = 6;
 }

 var newStr = oldStr.substring(0,4) + - + oldStr.substring(4,idx2) + - + oldStr.substring(idx2);
 return newStr;
}

/**
 * 校验是否大于当前时间(自动检测传入的时间格式)
 * @param dateStr
 * @returns
 */
function isMorethanNow(dateStr){
 var result = 'equals';
 //如果是YYYY-MM-DD
 if(dateStr.replace(YYYYMMDDReg,'')==''){
  result = compareNow(dateStr,dateCompare);

 //如果是YYYY-MM-DD HH:mm:ss
 }else if(dateStr.replace(YYYYMMDDHHmmssReg,'')==''){
  result = compareNow(dateStr,dateTimeCompare);

 //如果是YYYY-MM-DD HH:mm
 }else if(dateStr.replace(YYYYMMDDHHmmReg,'')==''){
  result = compareNow(dateStr+:59,dateTimeCompare);

 //如果是HH:mm:ss
 }else if(dateStr.replace(HHmmssReg,'')==''){
  result = compareNow(dateStr,timeCompare);

 //如果是HH:mm
 }else if(dateStr.replace(HHmmReg,'')==''){
  result = compareNow(dateStr+:59,timeCompare);
 }
 //如果大于
 if(result == dateTimeGTNow){
  return 'true';
 }else if(result == dateTimeLTNow){
  return 'false';
 }else{
  return 'equals';
 }
}

/**
 * 比较当前的日期或者时间(日期,时间)
 * @param dateStr
 * @param compareType 比较方式 date,time,dateTime (默认比较年月日)
 */
function compareNow(dateStr,compareType){
 //如果比较方式为空
 if(strIsNull(compareType)){
  compareType = dateCompare;
 }

 //获取当前日期
 var now = new Date();
 //比较日期
 if(compareType == dateCompare){
  var nowDate = new Date(now.getFullYear()+'/'+(now.getMonth()+1)+'/'+now.getDate());
  var fd_date = new Date(dateStr.replace(/-/g,'/'));

  if(fd_date>nowDate){
   return dateTimeGTNow;
  }else if(fd_datenow){
   return dateTimeGTNow;
  }else if(fd_datenowTimeStr){
   return dateTimeGTNow;
  }else if(dateStrNoSpace12){
  return monthGT12;
 }else if(month_num<1){
  return monthLT1;
 }
 return success;
}

/**
 * 校验日期是否合法
 * @param year_num  年份
 * @param month_num 月份
 * @param day_num 日期
 * @returns
 */
function validateDay(year_num,month_num,day_num){
 if(day_num<1){
  return dayLT1;

 //如果月份是1,3,5,7,8,10,12
 }else if((month_num==1||month_num==3||month_num==5||month_num==7
   ||month_num==8||month_num==10||month_num==12)&&day_num>31){
  return dayGT31;

 //如果月份是4,6,9,11
 }else if((month_num==4||month_num==6||month_num==9||month_num==11)
   &&day_num>30){
  return dayGT30;

 //如果月份是2
 }else if(month_num==2){
  //如果为闰年
  if(isLeapYear(year_num)&&day_num>29){
   return dayGT29;
  }else if(day_num>28){
   return dayGT28;
  }
 }
 return success;
}

/**
 * 校验是否为闰年
 * @param year_num
 * @returns
 */
function isLeapYear(year_num){

 /*年份为4的倍数不一定是闰年
  * (1)年份不是100的倍数但是4的倍数都是闰年 
  * (2)年份是400的倍数的年份是闰年 (如1900年不是闰年,而2000年是闰年)
  */
 return year_num%4==0&&(year_num%100!=0||year_num%400==0);
}

/**
 * 校验小时
 * @param hourSys 小时制
 * @param hour_num
 * @returns
 */
function validateHour(hour_num,hourSys){
 //24小时制
 if(hourSys == hour24System&&hour_num > 23){
  return hourGT23;

 //12小时制
 }else if(hourSys == hour12System&&hour_num > 11){
  return hourGT11;
 }
 return success;
}

/**
 * 校验分钟
 * @param minute_num
 * @returns
 */
function validateMinute(minute_num){
 //如果小时大于24
 if(minute_num>59){
  return minuteGT59;
 }
 return success;
}

/**
 * 校验秒钟
 * @param second_num
 * @returns
 */
function validateSecond(second_num){
 //如果小时大于24
 if(second_num>59){
  return secondGT59;
 }
 return success;
}

/**
 * 根据字符串获取整数值
 * @param str
 * @returns
 */
function getIntValue(str){
 if(strIsNull(str)){
  return 0;
 }

 return str.replace(/^0+/g,'');
}

/**
 * 字符串是否为空
 * @param dateStr
 */
function strIsNull(str){
 if(str!=null
   &&str.replace(/(^s*)|(s*$)/g,'').length>0){
  return false;
 }
 return true;
}

/**
 * 得到错误的提示信息
 * @param errCode 错误码
 * @param controlName 控件名
 * @param format 格式 
 */
function getErrorMsg(errCode,controlName,format){
 if(errCode == dateStrNull){
  return controlName+'不能为空';
 }else if(errCode == formatError){
  return controlName+'请按日期格式''+format+''输入';
 }else if(errCode == lengthLt8){
  return controlName+'请按日期格式'YYYYMMDD'输入';
 }else if(errCode == monthLT1){
  return controlName+'填写的月份有误,月份不能小于1';
 }else if(errCode == monthGT12){
  return controlName+'填写的月份有误,月份不能大于12';
 }else if(errCode == dayLT1){
  return controlName+'填写的日期有误,日期不能小于1';
 }else if(errCode == dayGT28){
  return controlName+'填写的日期有误,平年的2月份日期不能大于28';
 }else if(errCode == dayGT29){
  return controlName+'填写的日期有误,闰年的2月份日期不能大于29';
 }else if(errCode == dayGT30){
  return controlName+'填写的日期有误,月份为4,6,9,11时,日期不能大于30';
 }else if(errCode == dayGT31){
  return controlName+'填写的日期有误,月份为1,3,5,7,8,10,12时,日期不能大于31';
 }else if(errCode == hourGT23){
  return controlName+'填写的小时有误,24小时制的小时数不能超过23';
 }else if(errCode == hourGT11){
  return controlName+'填写的小时有误,12小时制的小时数不能超过11';
 }else if(errCode == minuteGT59){
  return controlName+'填写的分有误,分钟数不能超过59';
 }else if(errCode == secondGT59){
  return controlName+'填写的秒有误,秒钟数不能超过59';
 }else if(errCode == dateGTNow){
  return controlName+'填写日期有误,不能大于当前日期';
 }else if(errCode == dateLTNow){
  return controlName+'填写日期有误,不能小于当前日期';
 }else if(errCode == timeGTNow){
  return controlName+'填写时间有误,不能大于当前时间';
 }else if(errCode == timeLTNow){
  return controlName+'填写时间有误,不能小于当前时间';
 }else if(errCode == failure ){
  return controlName+'填写有误';
 }
}

 

 

 

 

 

* 校验是不是为YYYY-MM-DD 日期格式 * 校验是不是为YYYY-MM-DD HH:mm 日期+时分格式 * 校验是不是为YYYY-MM-DD HH:mm:ss 日期...

编辑:计算机 本文来源:JavaScript:时间日期格式验证大全

关键词: