?pwc_pengwenchao (高级程序员)的问题如下:写道
用js验证指定格式的时间
悬赏:30 发布时间:2010-12-10 提问人:pwc_pengwenchao (高级程序员)
< > 猎头职位: 安徽: 合肥,杭州:高薪诚聘前端开发工程师
Java代码
function dateISO(value, format)
{
// 这里如何写
}
dateISO('2010-12-10 17:25:10', 'yyyy-MM-dd HH:mm:ss'); //验证通过
dateISO('2010-12-10 17:25:10', 'yyyy-MM-dd HH:mm'); //验证不通过
dateISO('2010-12-10', 'yyyy-MM-dd'); //验证通过
dateISO('2010-12-10 17:25', 'yyyy-MM-dd HH:mm'); //验证通过
dateISO('17:25:10', 'HH:mm:ss'); //验证通过
就是输入的时间要和格式相匹配。
格式:可以有 yyyyMMdd HHmmss 这种的。
嗯 就先这两种吧,一种为有 - 的,一种 无 。先谢谢啦。
悬赏:30 发布时间:2010-12-10 提问人:pwc_pengwenchao (高级程序员)
< > 猎头职位: 安徽: 合肥,杭州:高薪诚聘前端开发工程师
Java代码
function dateISO(value, format)
{
// 这里如何写
}
dateISO('2010-12-10 17:25:10', 'yyyy-MM-dd HH:mm:ss'); //验证通过
dateISO('2010-12-10 17:25:10', 'yyyy-MM-dd HH:mm'); //验证不通过
dateISO('2010-12-10', 'yyyy-MM-dd'); //验证通过
dateISO('2010-12-10 17:25', 'yyyy-MM-dd HH:mm'); //验证通过
dateISO('17:25:10', 'HH:mm:ss'); //验证通过
就是输入的时间要和格式相匹配。
格式:可以有 yyyyMMdd HHmmss 这种的。
嗯 就先这两种吧,一种为有 - 的,一种 无 。先谢谢啦。
Step 1 分析:
???? 这个问题的解答,我们可以试着去想怎样去实现一个日期格式的转化,也就是通常语言中的Date类中的format ,指定一个yyyy/MM/dd HH:mm:ss ffff 就能对指定日期进行转换。
?????上面所讲的format,核心实现原理就是正则替换,现在我们来思考这个问题,这么确定格式正确,首先我们应该想到利用正则匹配来验证格式是否正确。因此我们可以做的是这样:
????? '2010-12-10 17:25:10', '\d{4}-\d{1,2}-\d{1,2} \d{1,2}:\d{1,2}:\d{1,2}'
我们可以用后面的正则来验证前面的日期是否符合格式,这样我们便有了方法:
????? 我们需要将'yyyy-MM-dd HH:mm:ss' 转换为正则表达式:
Step 2,给出解决问题的代码实现: ?var dateSourcePattern = 'yyyy-MM-dd HH:mm:ss' ;
var dateFormatPattern = dateSourcePattern
.replace('yyyy','[0-9]{4}')
.replace('MM','[0-9]{1,2}')
.replace('dd','[0-9]{1,2}')
.replace('HH','[0-9]{1,2}')
.replace('mm','[0-9]{1,2}')
.replace('ss','[0-9]{1,2}');
?这样转化为了正则后,就可以与以前的日期进行匹配了。
<html>
<head></head>
<body>
</body>
</html>
<script type="text/javascript">
/*
dateISO('2010-12-10 17:25:10', 'yyyy-MM-dd HH:mm:ss'); //验证通过
dateISO('2010-12-10 17:25:10', 'yyyy-MM-dd HH:mm'); //验证不通过
dateISO('2010-12-10', 'yyyy-MM-dd'); //验证通过
dateISO('2010-12-10 17:25', 'yyyy-MM-dd HH:mm'); //验证通过
dateISO('17:25:10', 'HH:mm:ss'); //验证通过
*/
var DateFormatter = {
Patterns:{
YEAR : /y/g,
MONTH : /M/g,
DAY : /d/g,
HOUR : /H/g,
MINUTE : /m/g,
SECOND : /s/g,
MILSECOND : /f/g
},
FormatPatterns:function(format){
return eval("/"+
format
.replace(this.Patterns.YEAR,'[0-9]')
.replace(this.Patterns.MONTH,'[0-9]')
.replace(this.Patterns.DAY,'[0-9]')
.replace(this.Patterns.HOUR,'[0-9]')
.replace(this.Patterns.MINUTE,'[0-9]')
.replace(this.Patterns.SECOND,'[0-9]')
.replace(this.Patterns.MILSECOND,'[0-9]')+
"/g");
},
DateISO:function(value,format){
var formatReg = "";
if(value == "" || format=="")
return false;
formatReg = this.FormatPatterns(format);
alert(formatReg);
return formatReg.test(value);
}
}
var ret = DateFormatter.DateISO('2010-1d-10 17:25:10', 'yyyy-MM-dd HH:mm:ss');
alert(ret); //false
var ret1 = DateFormatter.DateISO('2010-10-10 17:25:10', 'yyyy-MM-dd HH:mm:ss');
alert(ret1); //true
</script>
?