当前位置: 代码迷 >> JavaScript >> js中date与String类型转换的小结
  详细解决方案

js中date与String类型转换的小结

热度:518   发布时间:2012-10-08 19:54:56.0
js中date与String类型转换的总结

1、获取几天后时间的几种方法:

(本来考虑用Calendar方法,后来才发现js中根本无法使用Calendar)

   var dt = new Date();
  
 lont time = dt.valueOf() //返回1970到现在的毫秒数
 Long time = dt.getTime();//这就是距离1970年1月1日0点0分0秒的毫秒数
 Lont time = System.currentTimeMillis());//与上面的相同

   alert(new Date(1000*60*60*24 + dt.valueOf()))
   alert(new Date(1000*60*60*24 + date.getTime()))
	//一天后的日期

?抽离为方法:

var DAY = 1000*60*60*24;
	  Date.prototype.addDays = function(num){
		return new Date((num*DAY)+this.valueOf());
	  }
window.onload=function(){		
		var dt = new Date();
		alert(dt.addDays(2));
	}

?此处注意new Date().valueOf()也可获得毫秒数,这个以前根本都没用过,呵呵

?

2、date类型转Str类型:

//var mths = ["JAN", "FEB", "MAR", "APR", "MAY", "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DEC"];
//var WEEKs =["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday","Saturday"];
//var WEKs = [ "SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT" ];
?

?? 1、常用方法

//日期转Str
function toDDMMMYYYY(date) {
	var d = new Date(date.getTime());
	var dd = d.getDate() < 10 ? "0" + d.getDate() : d.getDate().toString();
	var mmm = mths[d.getMonth()];
	var yyyy = d.getFullYear().toString(); //2011
		//var YY = YYYY.substr(2);   // 11
	return dd + mmm + yyyy;
}

function toDDMMMYY(date) {
	var d = toDDMMMYYYY(date);
	return d.substring(0, 5) + d.substring(7, 9);
}

?这种方法限制死了最后的Str的格式,想要灵活使用,可用下面这种方法:

?

? 2、自己定义格式:

Date.prototype.parseStr = function(format) {
	var YYYY = this.getFullYear(); //2011
	
	var YY = YYYY.substr(2);   // 11
		format = format.replaceAll("@YYYY@",YYYY);
		format = format.replaceAll("@YY@",YY);
		
	var M=this.getMonth()+1;
	var MM=(M<10)?"0"+M:M;
	var MMM=mths[M - 1];
		format=format.replaceAll("@MMM@",MMM);
		format=format.replaceAll("@MM@",MM);
		format=format.replaceAll("@M@",M);
		
	var D=this.getDate();
	var DD=(D<10)?"0"+D:D;
		format=format.replaceAll("@DD@",DD);
		format=format.replaceAll("@D@",D);
		
	var h=this.getHours();
	var hh=(h<10)?"0"+h:h;
		format=format.replaceAll("@hh@",hh);
		format=format.replaceAll("@h@",h);
	var m=this.getMinutes();
	var mm=(m<10)?"0"+m:m;
		format=format.replaceAll("@mm@",mm);
		format=format.replaceAll("@m@",m);
	var s=this.getSeconds();
	var ss=(s<10)?"0"+s:s;
		format=format.replaceAll("@ss@",ss);
		format=format.replaceAll("@s@",s);
	var dayOfWeek=this.getDay();
	    format=format.replaceAll("@WEEK@",WEEKs[dayOfWeek]);
		format=format.replaceAll("@WEK@",WEKs[dayOfWeek]);
	return format;
}

?使用时直接这样即可:

//var outdateStr = outdate.parseStr("@DD@-@MMM@-@YYYY@");

?此处需注意一点:

????? js不提供replaceAll方法,只有replace方法 ,用for循环又有效率问题,最好的方法是用正则表达式

?

String.prototype.replaceAll = function (A,B){
           var C=this;
		for (var i=0;i<C.length;i++){
			C=C.replace(A,B);
		};
	  return C;
       }
?
String.prototype.replaceAll  = function(s1,s2){   
	 return this.replace(new RegExp(s1,"gm"),s2);   
    }

?自己定义了replaceAll方法后就可以像上面一样用replaceAll了。

?

js中replace方法:

??????????????????? replace(regexp/substr,replacement)

<script>
	var str="Visit Microsoft!"
	alert(str.replace("Microsoft", "W3School"));
	  //alert((str.replace(/Microsoft/, "W3School")); 也可以
</script>

另:

?由date求星期:
??? WEKs[date.getDay()];

  相关解决方案