代码改变世界

字符串直接转日期

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低版本中可以使用。