字符串直接转日期
2011-11-17 15:45 前端小鬼 阅读(358) 评论(0) 收藏 举报var date = new Date('2011-04-07');
这段代码一定可以在火狐,谷歌浏览器中生效,但是对于IE8以及更低IE版本就不支持了,会返回一个NAN.
但是我们是有这个需求的,要使用它,怎么办?
我们可以扩展Date原生的对象,用自定义的原型方法来嫁接到Date对象原型上。ok,所以我们可以这么做:
<script>
//var date = new Date('2011-04-07');
//alert(date);
Date.prototype.convertDate = function(date){
//新的日期
var newDate = new Date(),
flag = true;
if(typeof date === 'string') {
var dateArr = date.split('-');
if(dateArr.length != 3) {
dateArr = date.split('/');
if(dateArr.length != 3) {
return null;
}
flag = false;
}
if(flag) {
newDate.setFullYear(dateArr[0], dateArr[1] - 1, dateArr[2]);
} else {
newDate.setFullYear(dateArr[2], dateArr[1] - 1, dateArr[0]);
}
newDate.setHours(0, 0, 0);
return newDate;
}
}
var newDate = (new Date()).convertDate('2011/04/07');
console.log(newDate);
</script>
这样子,我们只需要new Date()一个具体对象,就可以使用这个原型方法了,注意(“2011-04-07”或者“2011/04/07”)这两种可以起效的。其实,这种思想很重要的。Understone.js库里面好多实现ECMAscript 262新标准的方法,使之可以在IE低版本中可以使用。
浙公网安备 33010602011771号