在我們的日常生活中,經常需要將時間戳(Unix 時間戳)轉化為日期,比如在移動端 App 中,消息發送時間和伺服器返回的時間往往是時間戳的形式,需要將其轉化為常見的日期格式,以便更好地呈現給用戶。
一、什麼是時間戳
時間戳,在計算機中指標準計時系統所定義的一個以秒為單位的整數。它代表自標準計時點(1970年1月1日00:00:00 UTC)起經過的秒數。
// JavaScript 獲取當前時間戳 const timestamp = Date.now() / 1000; console.log(timestamp); // 1625644103.732
二、如何將時間戳轉化為常見的日期格式
眾所周知,時間戳通常是一長串數字,對於普通人來說並不直觀。因此,我們需要將其轉化為常見的日期格式,以便閱讀。
1. 使用原生 JavaScript
可以使用原生的 JavaScript Date 對象和一些方法,將時間戳轉化為常見的日期格式。
// JavaScript 時間戳轉化為日期 const timestamp = 1625644103.732; const date = new Date(timestamp * 1000); const year = date.getFullYear(); // 年份 const month = date.getMonth() + 1; // 月份(記得加 1) const day = date.getDate(); // 日 const hour = date.getHours(); // 小時 const minute = date.getMinutes(); // 分鐘 const second = date.getSeconds(); // 秒鐘 console.log(`${year}-${month}-${day} ${hour}:${minute}:${second}`); // 2021-7-7 16:15:3
2. 使用第三方庫
除了原生 JavaScript,還可以使用一些第三方庫,如 Moment.js。Moment.js 是一個 JavaScript 日期處理庫,可以方便地進行日期格式化、日期計算等操作。
// JavaScript 使用 Moment.js 時間戳轉化為日期 const timestamp = 1625644103.732; const date = moment.unix(timestamp); console.log(date.format('YYYY-MM-DD HH:mm:ss')); // 2021-07-07 16:15:03
三、如何優化時間戳轉化為日期的性能
對於數量龐大的時間戳轉化為日期的操作,可能會存在性能問題。因此,我們需要優化代碼,提高性能。
1. 避免使用循環
在處理多個時間戳轉化為日期時,可以使用數組的 map 方法,避免使用循環。
// JavaScript map 遍歷時間戳數組並轉化為日期 const timestamps = [1625644103.732, 1625644103.733, 1625644103.734]; const dates = timestamps.map((timestamp) => new Date(timestamp * 1000)); console.log(dates);
2. 緩存重複計算結果
在處理多個時間戳轉化為日期時,可能會存在相同的時間戳需要被轉化為日期的情況。為了避免重複計算,可以使用對象緩存結果。
// JavaScript 對象緩存時間戳轉化為日期的結果 const timestamp = 1625644103.732; const cache = {}; if (!cache[timestamp]) { const date = new Date(timestamp * 1000); cache[timestamp] = date; } console.log(cache[timestamp]);
3. 使用 Worker 進行非同步計算
在處理大量時間戳轉化為日期時,可以使用 Worker 進行非同步計算,以防止阻塞主線程。
// JavaScript 使用 Worker 進行非同步計算時間戳轉化為日期 // main.js const worker = new Worker('worker.js'); worker.postMessage(1625644103.732); worker.onmessage = function (event) { console.log(event.data); } // worker.js onmessage = function (event) { const timestamp = event.data; const date = new Date(timestamp * 1000); postMessage(date); }
四、總結
本文從時間戳的定義開始,介紹了如何將時間戳轉化為常見的日期格式,以及如何優化時間戳轉化為日期的性能。希望能夠對讀者有所幫助。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/235880.html