一行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’這種時間格式。code

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’,這樣格式就對稱了。orm

新思路

爲了將時間戳轉換爲咱們須要的時間格式,咱們寫了兩個函數,加起來十幾行。前段時間,部門大佬告知了另一種方式,一行代碼完成時間戳轉換爲‘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方法替換。字符串

相關文章
相關標籤/搜索