文章分类 Classification
js判断日期格式
稿件来源: 阳光企业网站管理系统 撰稿作者: 太阳光 发表日期: 2011-06-13 阅读次数: 430 查看权限: 游客查看
javascript日期格式判断
最近开发 SCSCMSV2.0遇到一个日期格式判断问题,随手在百度上找到如下代码:
<script> function isDate(str) { var d = new Date(str) return !isNaN(d) } </script> function isDate(str) { var reg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/; result = str.match(reg); if(result == null)return false; var d = new Date(result[1],result[3]-1,result[4]) var newStr = d.getFullYear()+result[2]+(d.getMonth()+1)+result[2]+d.getDate(); return str == newStr } function IsDate(str) { var reg =/^(\d+)-(\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]); if(d.getFullYear()!=r[1])return false; if(d.getMonth()!=r[2])return false; if(d.getDate()!=r[3])return false; return true; } </script>
也没认真研究,直接使用了第二种方法。但后来发觉不对劲,验证不过关。于是好好研究了以上几个函数:
首先第一个函数太过简单,验证不严格isDate("2011-1-200")也能通过。
后面两个函数其实是同一个原理,也同样存在相同的漏洞:存在isDate("2011-01-02"),isDate("2011-01-20"),isDate("2011-1-02")类似的不能通过,也就是说只要日月数小于十并前追加0的就不能通过验证。以下是改良过的函数:
//判断是否为日期格式 function isDate(str){ var reg = /^(\d{1,4})(-|\/)(\d{1,2})(-|\/)(\d{1,2})$/,r; if(r = str.match(reg)){ var d = new Date(r[1],r[3]-1,r[5]); return d.getFullYear() == r[1] && (d.getMonth()+1) == r[3] && d.getDate() == r[5]; }else{ return false; } }
关键词: isdate,时间格式,isdate用法 编辑时间: 2014-04-18 17:33:27
0
高兴0
支持0
搞笑1
不解0
谎言0
枪稿1
震惊0
无奈0
无聊0
反对0
愤怒
100%(2)
0%(0)
- 暂无评论
文章图片 article Pictrue
网友评论