項目中的那些事---時間戳(一)


一、時間戳

簡單講,unix時間戳就是從1970-01-01開始所經過的秒數,什么時候獲取時間戳,就是到那個時間點所經歷的秒數。

二、JavaScript獲取時間戳

根據時間戳的定義,可以使用javascript中的幾個方法來獲取系統當前的時間戳:

1、getTime()

w3c school的解釋如下:

根據上面的定義,我們可以獲取系統當前的時間戳:

var timeStamp1 = new Date().getTime();
console.info(timeStamp1);
輸出:1524662952173

2、parse()

根據上面的解釋,parse方法返回的是指定日期和時間到1970年1月1日的毫秒數,所以只要將日期指定為系統當前時間,就能獲取系統當前的時間戳。

var timeStamp2 = Date.parse(new Date());
console.info(timeStamp2);
輸出:1524662952000

3、valueOf()

  

該方法返回的是Date對象的原始值,且和getTime返回相同的值,所以只要Date對象為系統當前時間,就能獲取系統當前的時間戳

var timeStamp3 = (new Date()).valueOf();
console.info(timeStamp3);
輸出:1524662952176

 以上是獲取系統當前時間的時間戳,如果要獲取指定時間的時間戳,只需要設置指定日期,然后用對應的日期對象進行操作即可,不再贅述。

從上面的結論可以看出,通過parse方法獲取的時間戳后三位都是0,如果用更多的數據測試,都會發現該方法返回的時間戳沒有其他兩種方法精確,

因為其后三位始終是0.

二、將時間戳轉化為日期

上面介紹的是獲取時間戳,也就是日期轉時間戳的方法,再來學習一下時間戳轉日期的方法。

轉成日期的方法也很簡單,只要將時間戳傳給Date即可,然后格式化成想要的格式,如YYYY-MM-DD hh:mm:ss

值得注意的一點是,在轉日期之前要先判斷時間戳是否是13位,如果不是13位,需要將不夠的幾位在低位用0代替,

例如:時間戳是1234567891  則在傳給Date()之前要轉成1234567891000

/**
	 * 將unix時間戳轉化成日期格式
	 */
	function timestamp2date(timestamp){
		var date = new Date(timestamp);
		var strLen = timestamp.toString().length;
		//判斷時間戳是否不足13位,不足時低位補0,即乘以10的所差位數次方
		if( strLen < 13){
			var sub = 13 - strLen;
			sub = Math.pow(10,sub);//計算10的n次方
			date = new Date(timestamp*sub);
		}
		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;
	}

	var ts = timestamp2date(1234567891);
	console.info(ts);
輸出結果:2009-02-14 7:31:31 var ts = timestamp2date(1234567891000); console.info(ts);
輸出結果:2009-02-14 7:31:31

為了驗證上面的結論,將補0部分去掉,結果如下:

/**
     * 將unix時間戳轉化成日期格式
     */
    function timestamp2date(timestamp){
        var date = new Date(timestamp);
        var strLen = timestamp.toString().length;
        //判斷時間戳是否不足13位,不足時低位補0,即乘以10的所差位數次方
        /* if( strLen < 13){
            var sub = 13 - strLen;
            sub = Math.pow(10,sub);//計算10的n次方
            date = new Date(timestamp*sub);
        } */
        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;
    }

    var ts = timestamp2date(1234567891);
    console.info(ts);
   輸出結果:1970-01-15 14:56:7
var ts = timestamp2date(1234567891000); console.info(ts);
   輸出結果:2009-02-14 7:31:31

以上就是JavaScript中日期和時間戳的轉化,如有錯誤之處,感謝指正!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM