我想通过js判断text中输入的是否是时间的标准格式:YYYY-MM-DD 上午HH时mi分ss秒。
部分代码如下:
var inputstr=Editname.value.toString();
var mystr=new Array("上","午","时","分","秒");
if (inputstr.charAt(12)!=mystr[1])
alert('日期不符合标准格式!');
在对比中文字符时总是为false。
---------------------------------------------------------------
var strTime = "0000-00-00 上午00时00分00秒";
alert(/\d{4}-\d{2}-\d{2} 上午\d{2}时\d{2}分\d{2}秒/.test(strTime));
---------------------------------------------------------------
//函数名:CheckDateTime
//功能介绍:检查是否为日期时间
function CheckDateTime(str){
var reg = /^(\d+)-(\d{1,2})-(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/;
var r = str.match(reg);
if(r==null)return false;
r[2]=r[2]-1;
var d= new Date(r[1], r[2],r[3], r[4],r[5], r[6]);
if(d.getFullYear()!=r[1])return false;
if(d.getMonth()!=r[2])return false;
if(d.getDate()!=r[3])return false;
if(d.getHours()!=r[4])return false;
if(d.getMinutes()!=r[5])return false;
if(d.getSeconds()!=r[6])return false;
return true;
}
---------------------------------------------------------------
嘿,看来我又太多自编函数供大家参考了。
检验函数一般用在form提交时的onsubmit函数校验,即
if(不符合规定) {
alert(提示信息);
xxx.focus();
return false;
}
下面是三个进行时间校验的函数:
function dNotTime(value)
// check if the value is NOT a time string
// @param :value, value being checked
// @return :if NOT time string return true, else return false
{
var value;
var rexp = /[^\d]+/; // detect delimiter string
if(!value) return true;
var delimiter = value.match(rexp);
if(delimiter) {
delimiter = delimiter.toString();
var dlen = delimiter.length;
if(value.indexOf(delimiter) != 2) return true;
value = value.substr(0,2) + value.substr(2 +dlen, 2) + value.substr(4 +2dlen, 2);
}
var tarr = [];
for(var k=0; k<3; k++) {
tarr[k] = value.substr(2k, 2);
if(isNaN(tarr[k])) return true;
tarr[k] = parseInt(tarr[k]);
}
if(tarr[0] < 0 ¦ ¦ tarr[0] >= 24
¦ ¦ tarr[1] < 0 ¦ ¦ tarr[1] >= 60
¦ ¦ tarr[2] < 0 ¦ ¦ tarr[2] >= 60) {
return true;
}
return false;
}
function dNotDate(value, y2d)
// check if the value is NOT a date string
// @param :value, value being checked
// @param :y2d, two digital year flag
// @return :if NOT date string return true, else return false
{
var value, y2d;
var rexp = /[^\d]+/; // detect delimiter string
if(!value) return true;
var delimiter = value.match(rexp);
var YRW = 4;
if(y2d) YRW = 2;
if(delimiter) {
delimiter = delimiter.toString();
var dlen = delimiter.length;
if(value.indexOf(delimiter) != YRW) return true;
value = value.substr(0,YRW) + value.substr(YRW +dlen, 2) + value.substr(YRW +2 +2dlen, 2);
}
var tarr = [];
for(var k=0; k<3; k++) {
tarr[k] = value.substr((k==0?0:(YRW +2(k-1))), (k==0?YRW:2));
if(isNaN(tarr[k])) return true;
tarr[k] = parseInt(tarr[k]);
if(y2d && k==0) tarr[k] = 1900 +tarr[k]; //year 2 digital process
}
var febdays = ((tarr[0]%4 == 0) && (tarr[0]%100 != 0) ¦ ¦ (tarr[0]%400 == 0))?29:28;
var mdarr = new Array(31,febdays,31,30,31,30,31,31,30,31,30,31);
if(tarr[0] < 0
¦ ¦ tarr[1] < 1 ¦ ¦ tarr[1] > 12
¦ ¦ tarr[2] < 1 ¦ ¦ tarr[2] > mdarr[tarr[1] -1]) {
return true;
}
return false;
}
function dNotDateTime(value, delimiter, y2d)
// check if the value is NOT a datetime string
// @param :value, value being checked
// @param :delimiter, delimiter between date string and time string
// @param :y2d, two digital year flag
// @return :if NOT datetime string return true, else return false
{
var value, delimiter, y2d;
if(!value) return true;
if(!delimiter) delimiter = "";
var datestr, timestr;
var DTW = 8;
if(y2d) DTW = 6;
if(!delimiter) {
datestr = value.substr(0, DTW);
timestr = value.substr(DTW, 6);
} else {
var dpos = value.indexOf(delimiter);
datestr = value.substring(0, dpos);
timestr = value.substring(dpos +delimiter.lenght, value.length);
}
return (dNotDate(datestr, y2d) ¦ ¦ dNotTime(timestr));
}