JS验证日期

今天遇到一个严重日期的问题,最开始想到是不是日期函数是不是有一个方法可以验证日期是否正确,然后找到js手册发现了Date.parse()这个方法,然后试了试:if(Date.parse(dateStr)){...}else{...} //dateStr格式:2011/11/11

由于自己用的是chrome作为调试的浏览器,试了试,发现屡试不爽,很是好用。但是出于怀疑的态度测试了一下IE6,奇怪的问题出现了,就是只要你格式正确了,Date.parse(dateStr)都是正确的,比如:Date.parse('2011/21/44')这样一看就不正确,但是在IE6下解析正确。这就让我头疼了,接着Google。

首先Google:Date.parse()发现没有好的说法,之后Google:JS验证日期,出来了一大篇,但是找了半天没找到一个自己中意的,原因是要么实在太长,要么我感觉没必要那么麻烦。

所以,想了想,思考了很久,然后开始试试IE6下这样不正常的字符串到底解析成什么样子的。然后是开始测试:

var d = new Date('2011/13/41');

alert(d.getYear()+'/'+(d.getMonth()+1)+'/'+d.getDay()) //2001/2/6 diff from 2011/13/41

然后就开始在这个得到的结果上做文章。大致思路就是,如果格式没有错误,非IE下Date.parse()也正确,那么就正确,如果IE下Date.parse下正确,那么再判断年月日是否和输入的是一样的。代码如下:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值