js中時間日期與時間戳相互轉換的方法

恰好這周需求中有用到日期格式與unix時間戳的相互轉換,查閱了一些資料,就打算寫一篇博客總結一下。

但願這篇文章足夠簡單粗暴,讓你一目瞭然,有所收穫。

 

一、日期格式轉換成時間戳

var timeStamp = new Date("日期");
/*
    目前我知道的支持轉換的時期格式爲:
        1. "2018/1/1 8:00:00";
        2. “2018,1,1 8:00:00”;
        3. "2018-1-1 8:00:00";
*/

其中年份爲必填,其餘的都可以省略,月/日不填的話默認是1月1日。

時:分:秒不填的話 ==> 1.2種格式默認是00:00:00,第三種格式默認是08:00:00

 

二、時間戳轉換成日期格式 

var date = new Date(timeStamp * 1000);//時間戳爲10位需*1000,時間戳爲13位的話不需乘1000
/*其實上面這一句,你就可以獲得一個日期格式的時間了。
  但如果你想要轉換成指定格式的日期,可以看下面這個超好用的函數
*/
function timestampToTime(timestamp) {
        var date = new Date(timestamp);
        var Y = date.getFullYear() + '-';
        var M = (date.getMonth()+1 < 10 ? '0'+(date.getMonth()+1) : date.getMonth()+1) + '-';
        var D = date.getDate() + ' ';
        var h = date.getHours() + ':';
        var m = date.getMinutes() + ':';
        var s = date.getSeconds();
        return Y+M+D+h+m+s;
    }
    timestampToTime(1543655727202);//這裏時間戳是13位,所以不需乘1000
    console.log(timestampToTime(1543655727202);//2018-10-1 17:15:27

小tips:可以看到getMonth的地方做了一點小處理,是因爲這裏返回的月份是從0開始的,所以需要+1

好的,看到這裏,如果你學到你想要的知識了,祝你食用愉快!

 

附:一些關於時間戳的其他小常識(趕時間的可以略過)

1.獲取當前時間戳的方法:

var timestamp1 = Date.parse(new Date()); //不推薦
var timestamp2 = (new Date()).valueOf();
var timestamp3 = new Date().getTime();

            第一種方式無法精確到毫秒,會默認用000代替。

            後兩種均可以精確到毫秒。

2.對日期進行加減:

var d = new Date("2008/04/15");
d.setMonth(d.getMonth() + 1 + 1);
//加一個月,同理,可以加一天:getDate()+1,加一年:getYear()+1
//注意setMonth/setDate/getYear這些都是對unix時間的api

如果你快樂編程的時候突然發現報錯:UnCaught TypeError:date.getMonth is not a function,那就是我上面說的,你先需要把date格式(日期格式)的時間轉換成Date格式(時間戳格式)

再給一個現成的封裝好的對日期days相加的函數,其他的類似寫就好

     function addDate(date,days){ 
       var d=new Date(date); 
       d.setDate(d.getDate()+days); 
       var m=d.getMonth()+1; 
       return d.getFullYear()+'-'+m+'-'+d.getDate(); 
     } 

     寫到這裏,應該能滿足大部分hr的需求(神奇需求除外)

     撒花,完結~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章