zl程序教程

您现在的位置是:首页 >  前端

当前栏目

JavaScript日期时间与时间戳的转换函数分享

JavaScript转换日期 函数 时间 分享
2023-06-13 09:15:43 时间

如果只是将当前时间转成时间戳,可以直接使用newDate().getTime()/1000;但如果是将某个具体时间或日期转成Unix时间戳,ie不支持像newDate(“2013-1-1”) 这样带参数的方法,将返回NaN。

对此,我写了以下函数,支持ie6+,谷歌,火狐等浏览器:

复制代码代码如下:


functiongetTime(day){
 re=/(\d{4})(?:-(\d{1,2})(?:-(\d{1,2}))?)?(?:\s+(\d{1,2}):(\d{1,2}):(\d{1,2}))?/.exec(day);
 returnnewDate(re[1],(re[2]||1)-1,re[3]||1,re[4]||0,re[5]||0,re[6]||0).getTime()/1000;
}

//test
alert(getTime("2013-02-0310:10:10"));
alert(getTime("2013-02-03"));
alert(getTime("2013-02"));
alert(getTime("2013"));

下面这个将时间戳转换成日期格式的函数,支持自定义的日期格式,效果类似PHP的date函数,同样支持ie6+,谷歌,火狐等浏览器。这个函数是网友实现的,以后有时间我也写一个出来^_^

复制代码代码如下:


functiondate(format,timestamp){
   vara,jsdate=((timestamp)?newDate(timestamp*1000):newDate());
   varpad=function(n,c){
       if((n=n+"").length<c){
           returnnewArray(++c-n.length).join("0")+n;
       }else{
           returnn;
       }
   };
   vartxt_weekdays=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];
   vartxt_ordin={1:"st",2:"nd",3:"rd",21:"st",22:"nd",23:"rd",31:"st"};
   vartxt_months=["","January","February","March","April","May","June","July","August","September","October","November","December"];
   varf={
       //Day
       d:function(){returnpad(f.j(),2)},
       D:function(){returnf.l().substr(0,3)},
       j:function(){returnjsdate.getDate()},
       l:function(){returntxt_weekdays[f.w()]},
       N:function(){returnf.w()+1},
       S:function(){returntxt_ordin[f.j()]?txt_ordin[f.j()]:"th"},
       w:function(){returnjsdate.getDay()},
       z:function(){return(jsdate-newDate(jsdate.getFullYear()+"/1/1"))/864e5>>0},
     
       //Week
       W:function(){
           vara=f.z(),b=364+f.L()-a;
           varnd2,nd=(newDate(jsdate.getFullYear()+"/1/1").getDay()||7)-1;
           if(b<=2&&((jsdate.getDay()||7)-1)<=2-b){
               return1;
           }else{
               if(a<=2&&nd>=4&&a>=(6-nd)){
                   nd2=newDate(jsdate.getFullYear()-1+"/12/31");
                   returndate("W",Math.round(nd2.getTime()/1000));
               }else{
                   return(1+(nd<=3?((a+nd)/7):(a-(7-nd))/7)>>0);
               }
           }
       },
     
       //Month
       F:function(){returntxt_months[f.n()]},
       m:function(){returnpad(f.n(),2)},
       M:function(){returnf.F().substr(0,3)},
       n:function(){returnjsdate.getMonth()+1},
       t:function(){
           varn;
           if((n=jsdate.getMonth()+1)==2){
               return28+f.L();
           }else{
               if(n&1&&n<8||!(n&1)&&n>7){
                   return31;
               }else{
                   return30;
               }
           }
       },
     
       //Year
       L:function(){vary=f.Y();return(!(y&3)&&(y%1e2||!(y%4e2)))?1:0},
       //onotsupportedyet
       Y:function(){returnjsdate.getFullYear()},
       y:function(){return(jsdate.getFullYear()+"").slice(2)},
     
       //Time
       a:function(){returnjsdate.getHours()>11?"pm":"am"},
       A:function(){returnf.a().toUpperCase()},
       B:function(){
           //peterpaulkoch:
           varoff=(jsdate.getTimezoneOffset()+60)*60;
           vartheSeconds=(jsdate.getHours()*3600)+(jsdate.getMinutes()*60)+jsdate.getSeconds()+off;
           varbeat=Math.floor(theSeconds/86.4);
           if(beat>1000)beat-=1000;
           if(beat<0)beat+=1000;
           if((String(beat)).length==1)beat="00"+beat;
           if((String(beat)).length==2)beat="0"+beat;
           returnbeat;
       },
       g:function(){returnjsdate.getHours()%12||12},
       G:function(){returnjsdate.getHours()},
       h:function(){returnpad(f.g(),2)},
       H:function(){returnpad(jsdate.getHours(),2)},
       i:function(){returnpad(jsdate.getMinutes(),2)},
       s:function(){returnpad(jsdate.getSeconds(),2)},
       //unotsupportedyet
     
       //Timezone
       //enotsupportedyet
       //Inotsupportedyet
       O:function(){
           vart=pad(Math.abs(jsdate.getTimezoneOffset()/60*100),4);
           if(jsdate.getTimezoneOffset()>0)t="-"+t;elset="+"+t;
           returnt;
       },
       P:function(){varO=f.O();return(O.substr(0,3)+":"+O.substr(3,2))},
       //Tnotsupportedyet
       //Znotsupportedyet
     
       //FullDate/Time
       c:function(){returnf.Y()+"-"+f.m()+"-"+f.d()+"T"+f.h()+":"+f.i()+":"+f.s()+f.P()},
       //rnotsupportedyet
       U:function(){returnMath.round(jsdate.getTime()/1000)}
   };
     
   returnformat.replace(/[\\]?([a-zA-Z])/g,function(t,s){
       if(t!=s){
           //escaped
           ret=s;
       }elseif(f[s]){
           //adatefunctionexists
           ret=f[s]();
       }else{
           //nothingspecial
           ret=s;
       }
       returnret;
   });
}

//test
alert(date("Y-m-dH:i:s",(newDate).getTime()/1000));
alert(date("Y-m-d",(newDate).getTime()/1000));
alert(date("Y-m-dH:i:s","1355252653"));