首頁 >web前端 >js教程 >js實作時間戳轉時間格式的程式碼詳解

js實作時間戳轉時間格式的程式碼詳解

不言
不言原創
2018-08-13 17:30:201685瀏覽

這篇文章帶給大家的內容是關於js實現時間戳轉時間格式的程式碼詳解,有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

前端開發過程中,常常需要將時間戳轉換為標準時間格式供使用者瀏覽。不借助方法庫的情況下,如何又快又好的實作呢?下面介紹兩種方法。

老方法

平常用的基本是這個方法,用Date方法依序將年月日時分秒一個個算出來,然後拼接成需要的時間格式字串。

function transformTime(timestamp = +new Date()) {
    if (timestamp) {
        var time = new Date(timestamp);
        var y = time.getFullYear(); //getFullYear方法以四位数字返回年份
        var M = time.getMonth() + 1; // getMonth方法从 Date 对象返回月份 (0 ~ 11),返回结果需要手动加一
        var d = time.getDate(); // getDate方法从 Date 对象返回一个月中的某一天 (1 ~ 31)
        var h = time.getHours(); // getHours方法返回 Date 对象的小时 (0 ~ 23)
        var m = time.getMinutes(); // getMinutes方法返回 Date 对象的分钟 (0 ~ 59)
        var s = time.getSeconds(); // getSeconds方法返回 Date 对象的秒数 (0 ~ 59)
        return y + '-' + M + '-' + d + ' ' + h + ':' + m + ':' + s;
      } else {
          return '';
      }
}
transformTime(); // "2018-8-8 12:9:12"

老方法改進版

上面的轉換方法,透過將時間戳轉換為Date實例,利用Date對應的方法取得對應的年月日時分秒,所取得的時間格式是'2018-8-8 12:9:12',看著有點彆扭。為了轉換成我們常用的時間格式,還需要注意對小於10的值,在前面加上字串‘0’,轉換為‘2018-08-08 12:09:12’這種時間格式。

function transformTime(timestamp = +new Date()) {
    if (timestamp) {
        var time = new Date(timestamp);
        var y = time.getFullYear();
        var M = time.getMonth() + 1;
        var d = time.getDate();
        var h = time.getHours();
        var m = time.getMinutes();
        var s = time.getSeconds();
        return y + '-' + addZero(M) + '-' + addZero(d) + ' ' + addZero(h) + ':' + addZero(m) + ':' + addZero(s);
      } else {
          return '';
      }
}
function addZero(m) {
    return m < 10 ? '0' + m : m;
}
transformTime(); // "2018-08-08 12:09:12"

對傳回小於10的時間數值進行處理,用‘addZero’方法為字串加上‘0’,這樣格式就對稱了。

新想法

為了將時間戳轉換為我們需要的時間格式,我們寫了兩個函數,加起來十幾行。前段時間,部門大佬告知了另一種方式,一行代碼完成時間戳轉換為'YYYY-MM-DD HH:mm:ss'形式的時間格式,頓時代碼精簡了很多,話不多說,亮出程式碼

function time(time = +new Date()) {
    var date = new Date(time + 8 * 3600 * 1000); // 增加8小时
    return date.toJSON().substr(0, 19).replace('T', ' ');
}
time(); // "2018-08-09 18:25:54"

Date的'toJSON'方法傳回格林威治時間的JSON格式字串,實際上是使用'toISOString'方法的結果。字串形如'2018-08-09T10:20:54.396Z',轉換為北京時間需要額外增加八個時區,我們需要取字串前19位,然後把'T'替換為空格,即是我們需要的時間格式。

function time(time = +new Date()) {
    var date = new Date(time + 8 * 3600 * 1000);
    return date.toJSON().substr(0, 19).replace('T', ' ').replace(/-/g, '.');
}
time(); // "2018.08.09 18:25:54"

把時間格式中的‘-’修改為‘.’或其他符號都是可以的。比較老方法,這種方法程式碼量比以前省了不只一星半點的,讀起來也簡潔多了。如果時間格式需要毫秒數,只需要取得前23位元字串,和上面一樣用replace方法取代。

相關推薦:

js如何匯出以及匯入excel? js導入導出excel的方法(純程式碼)

js如何實現下拉式選單的左右移動(程式碼)

js如何利用setInterval定時器方法實作輪播圖(完整程式碼)

#

以上是js實作時間戳轉時間格式的程式碼詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn