`
modabobo
  • 浏览: 508068 次
文章分类
社区版块
存档分类
最新评论

JS日期格式判断

 
阅读更多

检查格式2003-9-9 23:11:23

<input type="text" value="2003-9-9 23:11:23" id="inputtime">
<input type="button" onclick="changev()" value="click">
<script>
function changev(){
var aaa=inputtime.value
ttt=aaa.match(/\d{4}-\d{1,2}-\d{1,2} \d{1,2}:\d{1,2}:\d{1,2}/)
if(ttt==null) alert("error");else alert("ok");
}
</script>

1 短时间,形如 (13:04:06)
function isTime(str){
var a = str.match(/^(\d{1,2})(:)?(\d{1,2})\2(\d{1,2})$/);
if (a == null) {alert('输入的参数不是时间格式'); return false;}
if (a[1]>24 || a[3]>60 || a[4]>60){
alert("时间格式不对");
return false
}
return true;
}

2. 短日期,形如 (2008-07-22)
function strDateTime(str){
var r = str.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/);
if(r==null)return false;
var d= new Date(r[1], r[3]-1, r[4]);
return (d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]);
}

3 长时间,形如 (2008-07-22 13:04:06)
function strDateTime(str){
var reg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/;
var r = str.match(reg);
if(r==null)return false;
var d= new Date(r[1], r[3]-1,r[4],r[5],r[6],r[7]);
return (d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]&&d.getHours()==r[5]&&d.getMinutes()==r[6]&&d.getSeconds()==r[7]);
}

/**

判断时间大小

sdate1: 开始时间

edate2: 结束时间

return: true/false

**/
function checkDate(sdate1,edate2){
if(sdate1!=""&&edate2!="")
{ //输入不为空时;
// 对字符串进行处理
// 以 - / 或 空格 为分隔符, 将日期字符串分割为数组
var date1 = sdate1.split("-");
var date2 = edate2.split("-");
// 创建 Date 对象
var myDate1 = new Date(date1[0],date1[1],date1[2]);
var myDate2 = new Date(date2[0],date2[1],date2[2]);

// 对日起进行比较
if (myDate1 <= myDate2)
{
return true;
}else
{
alert ("提示: 开始时间不能大于结束时间!");
return false;
}
}
else
{
return true;
}
}
/**
判断日期格式 2000-01-01
strDate:检测的日期格式
return: true/false
**/
function isDate(strDate){
var strSeparator = "-"; //日期分隔符
var strDateArray;
var intYear;
var intMonth;
var intDay;
var boolLeapYear;
//var strDate=form1.a.value //表单中的日期值
strDateArray = strDate.split(strSeparator);

if(strDateArray.length!=3) { alert('提示: 日期格式错误! \r\n 请依【YYYY-MM-DD】格式输入!'); return false; }

intYear = parseInt(strDateArray[0],10);
intMonth = parseInt(strDateArray[1],10);
intDay = parseInt(strDateArray[2],10);

if(isNaN(intYear)||isNaN(intMonth)||isNaN(intDay)) { alert('提示: 日期格式错误! \r\n 请依【YYYY-MM-DD】格式输入!'); return false; }

if(intMonth>12||intMonth<1) { alert('提示: 日期格式错误! \r\n 请依【YYYY-MM-DD】格式输入!'); return false; }

if((intMonth==1||intMonth==3||intMonth==5||intMonth==7||intMonth==8||intMonth==10||intMonth==12)&&(intDay>31||intDay<1)) { alert('提示: 日期格式错误! \r\n 请依【YYYY-MM-DD】格式输入!'); return false; }

if((intMonth==4||intMonth==6||intMonth==9||intMonth==11)&&(intDay>30||intDay<1)) { alert('提示: 日期格式错误! \r\n 请依【YYYY-MM-DD】格式输入!'); return false; }

if(intMonth==2){
if(intDay<1) { alert('提示: 日期格式错误! \r\n 请依【YYYY-MM-DD】格式输入!'); return false; }

boolLeapYear = false;
if((intYear%4==0 && intYear %100!=0)||(intYear %400==0))
{
boolLeapYear=true;
}

if(boolLeapYear){
if(intDay>29) { alert('提示: 日期格式错误! \r\n 请依【YYYY-MM-DD】格式输入!'); return false; }
}
else{
if(intDay>28) { alert('提示: 日期格式错误! \r\n 请依【YYYY-MM-DD】格式输入!'); return false; }
}
}

return true;
}

附注:

如果是24小时制的(23:59的格式):re = /^([01][0-9]|2[0-3])\:[0-5][0-9]$/

如果还带秒数的(23:59:59的格式):re = /^([01][0-9]|2[0-3])\:[0-5][0-9]\:[0-5][0-9]$/

如果前后有空格的也要匹配的:re = /^\s*([01][0-9]|2[0-3])\:[0-5][0-9]\:[0-5][0-9]\s*$/

如果24小时制的,要秒数不要秒数都可以的,并且前后还可以加空格的:

re = /^\s*([01][0-9]|2[0-3])\:[0-5][0-9](\:[0-5][0-9]){0,1}\s*$/ 或者:

re = /^\s*([01][0-9]|2[0-3])\:[0-5][0-9](\:[0-5][0-9])?\s*$/

判断全格式时间的正确性:

如:2012-03-04 23:09:00

^[0-9]{4}-[0-9]{2}-[0-9]{2}\s+([01][0-9]|2[0-3])\:[0-5][0-9]\:[0-5][0-9]$


转自:http://blog.csdn.net/itxiaohei323/article/details/7916598

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics