時間戳是指從1970年1月1日0時0分0秒(北京時間:1970年1月1日8時0分0秒)開始,到現在所經過的秒數。在開發中,我們經常需要將時間戳轉換為時間或日期格式,本文將從多個方面詳細闡述這個過程。
一、時間戳轉換時間段
如何將時間戳轉換為時間段呢?很簡單,只需要使用時間戳除以對應的時間單位得到時間段即可。例如:
var timestamp = 1577836800; // 對應的時間戳為2020-01-01 00:00:00
var seconds = timestamp % 60; // 秒
var minutes = Math.floor(timestamp / 60) % 60; // 分鐘
var hours = Math.floor(timestamp / (60 * 60)) % 24; // 小時
var days = Math.floor(timestamp / (60 * 60 * 24)); // 天數
console.log(days + "天" + hours + "小時" + minutes + "分鐘" + seconds + "秒"); // 輸出:0天0小時0分鐘0秒
這裡我們通過計算得到了時間戳所對應的天、小時、分鐘和秒數,再將其拼接成時間段的格式。
二、時間戳轉換為時間格式
將時間戳轉換為時間格式最簡單的方式是使用JavaScript的Date對象。只需要將時間戳當做參數傳入Date,即可得到對應的時間對象。例如:
var timestamp = 1577836800; // 對應的時間戳為2020-01-01 00:00:00
var time = new Date(timestamp * 1000);
console.log(time.toLocaleString()); // 輸出:"2020/1/1 上午12:00:00"
這裡需要注意,JavaScript的Date對象接受的參數為毫秒數,因此需要將時間戳乘以1000。
三、時間戳轉換時間日期格式
有時候我們需要將時間戳轉換為指定的時間日期格式,可以使用JavaScript內置的toLocaleDateString()和toLocaleTimeString()方法。例如:
var timestamp = 1577836800; // 對應的時間戳為2020-01-01 00:00:00
var options = {
year: 'numeric',
month: '2-digit',
day: '2-digit',
hour: '2-digit',
minute: '2-digit',
second: '2-digit'
};
var date = new Date(timestamp * 1000);
var date_str = date.toLocaleDateString('zh-CN', options);
var time_str = date.toLocaleTimeString('zh-CN', options);
console.log(date_str + " " + time_str); // 輸出:"2020/01/01 00:00:00"
這裡我們指定了需要顯示的時間日期格式,並使用toLocaleDateString()和toLocaleTimeString()方法將時間對象轉換為字元串。需要注意的是,toLocaleDateString()和toLocaleTimeString()方法的第一個參數是區域設置的字元串,對應語言和地區。在這裡我們指定了為中國地區。
四、時間戳轉換時間的演算法
時間戳轉換為時間的演算法很簡單,只需要將時間戳除以對應的時間單位,再將餘數進行下一次除法運算,即可得到時間戳所對應的年、月、日、時、分和秒數。以下是對應的示例代碼:
// 時間戳轉換為時間
function timestampToTime(timestamp) {
var date = new Date(timestamp * 1000);
var year = date.getFullYear();
var month = date.getMonth() + 1;
var day = date.getDate();
var hour = date.getHours();
var minute = date.getMinutes();
var second = date.getSeconds();
return year + "-" + month + "-" + day + " " + hour + ":" + minute + ":" + second;
}
console.log(timestampToTime(1577836800)); // 輸出:"2020-1-1 0:0:0"
這裡我們封裝了一個函數,將時間戳轉換為時間。在函數內部,我們使用了Date對象獲取對應的日期和時間,再將其拼接成字元串格式。需要注意的是,月份從0開始,因此需要將其加一。
五、時間戳轉換時間函數
既然已經有了時間戳轉換為時間的演算法,我們可以很容易地將其封裝成一個函數。以下是對應的代碼:
// 時間戳轉換為時間
function timestampToTime(timestamp) {
var date = new Date(timestamp * 1000);
var year = date.getFullYear();
var month = date.getMonth() + 1;
var day = date.getDate();
var hour = date.getHours();
var minute = date.getMinutes();
var second = date.getSeconds();
return year + "-" + month + "-" + day + " " + hour + ":" + minute + ":" + second;
}
console.log(timestampToTime(1577836800)); // 輸出:"2020-1-1 0:0:0"
這裡的函數和前面提到的演算法一致,只是將其封裝成了一個可復用的函數。在實際開發中,經常會用到這樣的函數。
六、時間戳轉換時間公式
除了使用演算法和函數,我們還可以使用公式進行時間戳轉換。設時間戳為timestamp,時間戳所對應的時間為time,時間戳所對應的時區為timezone,則時間與時間戳的關係如下:
time = timestamp + 3600 * timezone;
其中3600為一小時所對應的秒數,timezone為時區。例如,北京時間的時區為8,因此對應的timezone為8。
七、時間戳轉換時間js
對於時間戳轉換為時間的需求,JavaScript提供了多種方式實現。其中一種最簡單的方式是使用Date對象。以下是對應的示例代碼:
var timestamp = 1577836800; // 對應的時間戳為2020-01-01 00:00:00
var time = new Date(timestamp * 1000);
console.log(time.toLocaleString()); // 輸出:"2020/1/1 上午12:00:00"
這裡我們將時間戳傳入Date對象,再使用toLocaleString()方法將其轉換為字元串格式。需要注意的是,JavaScript的Date對象對時間的處理和標準時間有些差別,因此在使用時需要根據情況進行轉換。
八、時間戳轉換時間格式
有時候我們需要將時間戳轉換為指定的時間格式,例如:YYYY-MM-DD HH:mm:ss,這時候可以使用moment.js庫。以下是對應的示例代碼:
var timestamp = 1577836800; // 對應的時間戳為2020-01-01 00:00:00
var time = moment.unix(timestamp).format("YYYY-MM-DD HH:mm:ss");
console.log(time); // 輸出:"2020-01-01 00:00:00"
這裡我們使用了moment.js庫,首先將時間戳轉換為時間對象,再使用format()方法將其轉換為指定的時間格式。
九、時間戳轉換選取
時間戳轉換為時間的需求在開發中非常常見,因此我們需要根據實際情況選擇最合適的方式進行處理。一般來說,使用JavaScript的Date對象和moment.js庫都是比較常用的方式。如果需要處理時區的問題,則可以使用公式進行轉換。
最後,我們來看一下完整的時間戳轉換為時間格式的代碼:
// 時間戳轉換為時間格式
function timestampToTime(timestamp) {
var date = new Date(timestamp * 1000);
var year = date.getFullYear();
var month = date.getMonth() + 1;
var day = date.getDate();
var hour = date.getHours();
var minute = date.getMinutes();
var second = date.getSeconds();
return year + "-" + month + "-" + day + " " + hour + ":" + minute + ":" + second;
}
// 示例
var timestamp = 1577836800; // 對應的時間戳為2020-01-01 00:00:00
var time = timestampToTime(timestamp);
console.log(time); // 輸出:"2020-1-1 0:0:0"
這裡我們封裝了一個時間戳轉換為時間格式的函數,再使用示例進行驗證。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/155090.html