js中date与String转换

JS中字符转日期

var remindTime = "2008-04-02 10:08:44"; 

直接new Date(remindTime ) 即可。

 

1.比较常用的方法,但繁琐:

主要使用Date的构造方法:Date(int year , int month , int day)

 

Java代码   收藏代码
  1. <script>  
  2. var str1 = "2009-8-9";  
  3. var arr1 = str1.split("-");  
  4. var date1 = new Date(arr1[0],parseInt(arr1[1])-1,arr1[2]);  
  5.   
  6. var str2 = "2009-8-4";  
  7. var arr2 = str2.split("-");  
  8. var date2 = new Date(arr2[0],parseInt(arr2[1])-1,arr2[2]);  
  9.   
  10. alert(date1>date2);//true  
  11. </script>  

 2.简便方法:

Java代码   收藏代码
  1. var  str =   "2005-12-15";   
  2. var  d   =   new   Date(str.replace(/-/g,   "/"));  

 

Java代码   收藏代码
  1. /-/g是js的正则表达式,匹配划线的  
  2.   
  3. re   =   /pattern/[flags]  
  4.   
  5. 用   "/ "   字符分隔模式    
  6. g   (全文查找出现的所有   pattern)    
  7. i   (忽略大小写)    
  8. m   (多行查找)  

 Example:

Java代码   收藏代码
  1. <script>  
  2.      var s = "2010-09-11";  
  3.      var s1 = "2010-09-12";  
  4.      var d = new Date(s.replace(/-/g,"/"));  
  5.      var d1 = new Date(s1.replace(/-/g,"/"));  
  6.      var m = (d1.getTime()-d.getTime())/(1000*60*60);  
  7.      alert(m);  //24  
  8.  </script>  

 

 

JS比较时间:

 

Java代码   收藏代码
  1. <script language="JavaScript">   
  2.   
  3. //时间对比函数,如果a>b返回1,如果a<b返回-1,相等返回0   
  4. function comptime(a,b)   
  5. {   
  6. var dateA = new Date("1900/1/1 " + a);   
  7. var dateB = new Date("1900/1/1 " + b);   
  8. if(isNaN(dateA) || isNaN(dateB)) return null;   
  9. if(dateA > dateB) return 1;   
  10. if(dateA < dateB) return -1;   
  11. return 0;   
  12. }   
  13.   
  14. var timeStart = "3:20";   
  15. var timeEnd = "2:11";   
  16.   
  17. if(comptime(timeStart,timeEnd) != -1)  
  18.       alert("开始时间必须小于结束时间!");   
  19.   
  20. </script>  

 ----------------------------------------------------------------------------------------------------------------------

 

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

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

Java代码   收藏代码
  1.   var dt = new Date();  
  2.    
  3. lont time = dt.valueOf() //返回1970到现在的毫秒数  
  4. Long time = dt.getTime();//这就是距离1970年1月1日0点0分0秒的毫秒数  
  5. Lont time = System.currentTimeMillis());//与上面的相同  
  6.   
  7.   alert(new Date(1000*60*60*24 + dt.valueOf()))  
  8.   alert(new Date(1000*60*60*24 + date.getTime()))  
  9. //一天后的日期  

 抽离为方法:

Java代码   收藏代码
  1. var DAY = 1000*60*60*24;  
  2.       Date.prototype.addDays = function(num){  
  3.         return new Date((num*DAY)+this.valueOf());  
  4.       }  
  5. window.οnlοad=function(){         
  6.         var dt = new Date();  
  7.         alert(dt.addDays(2));  
  8.     }  

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

 

2、date类型转Str类型:

Java代码   收藏代码
  1. //var mths = ["JAN", "FEB", "MAR", "APR", "MAY", "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DEC"];  
  2. //var WEEKs =["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday","Saturday"];  
  3. //var WEKs = [ "SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT" ];  

 

   1、常用方法

Java代码   收藏代码
  1. //日期转Str  
  2. function toDDMMMYYYY(date) {  
  3.     var d = new Date(date.getTime());  
  4.     var dd = d.getDate() < 10 ? "0" + d.getDate() : d.getDate().toString();  
  5.     var mmm = mths[d.getMonth()];  
  6.     var yyyy = d.getFullYear().toString(); //2011  
  7.         //var YY = YYYY.substr(2);   // 11  
  8.     return dd + mmm + yyyy;  
  9. }  
  10.   
  11. function toDDMMMYY(date) {  
  12.     var d = toDDMMMYYYY(date);  
  13.     return d.substring(05) + d.substring(79);  
  14. }  

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

 

  2、自己定义格式:

Java代码   收藏代码
  1. Date.prototype.parseStr = function(format) {  
  2.     var YYYY = this.getFullYear(); //2011  
  3.       
  4.     var YY = YYYY.substr(2);   // 11  
  5.         format = format.replaceAll("@YYYY@",YYYY);  
  6.         format = format.replaceAll("@YY@",YY);  
  7.           
  8.     var M=this.getMonth()+1;  
  9.     var MM=(M<10)?"0"+M:M;  
  10.     var MMM=mths[M - 1];  
  11.         format=format.replaceAll("@MMM@",MMM);  
  12.         format=format.replaceAll("@MM@",MM);  
  13.         format=format.replaceAll("@M@",M);  
  14.           
  15.     var D=this.getDate();  
  16.     var DD=(D<10)?"0"+D:D;  
  17.         format=format.replaceAll("@DD@",DD);  
  18.         format=format.replaceAll("@D@",D);  
  19.           
  20.     var h=this.getHours();  
  21.     var hh=(h<10)?"0"+h:h;  
  22.         format=format.replaceAll("@hh@",hh);  
  23.         format=format.replaceAll("@h@",h);  
  24.     var m=this.getMinutes();  
  25.     var mm=(m<10)?"0"+m:m;  
  26.         format=format.replaceAll("@mm@",mm);  
  27.         format=format.replaceAll("@m@",m);  
  28.     var s=this.getSeconds();  
  29.     var ss=(s<10)?"0"+s:s;  
  30.         format=format.replaceAll("@ss@",ss);  
  31.         format=format.replaceAll("@s@",s);  
  32.     var dayOfWeek=this.getDay();  
  33.         format=format.replaceAll("@WEEK@",WEEKs[dayOfWeek]);  
  34.         format=format.replaceAll("@WEK@",WEKs[dayOfWeek]);  
  35.     return format;  
  36. }  

 使用时直接这样即可:

Java代码   收藏代码
  1. //var outdateStr = outdate.parseStr("@DD@-@MMM@-@YYYY@");  

 此处需注意一点:

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

 

Java代码   收藏代码
  1. String.prototype.replaceAll = function (A,B){  
  2.            var C=this;  
  3.         for (var i=0;i<C.length;i++){  
  4.             C=C.replace(A,B);  
  5.         };  
  6.       return C;  
  7.        }  

 

Java代码   收藏代码
  1. String.prototype.replaceAll  = function(s1,s2){     
  2.      return this.replace(new RegExp(s1,"gm"),s2);     
  3.     }  

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

 

js中replace方法:

                    replace(regexp/substr,replacement)

Java代码   收藏代码
  1. <script>  
  2.     var str="Visit Microsoft!"  
  3.     alert(str.replace("Microsoft""W3School"));  
  4.       //alert((str.replace(/Microsoft/, "W3School")); 也可以  
  5. </script>  

另:

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值