浏览 5545 次
锁定老帖子 主题:js中date与String类型转换的总结
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-05-26
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求星期: 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |