另一個位置/時區的當前時間 [JavaScript]
本文將演示如何在Javascript中獲取另一個位置/時區的當前時間,只需一行代碼。
最簡單的純 JavaScript 方式
下面的函數將給定的日期轉換為不同的時區,並且只包含 1 行代碼。
function timezoneConvert(date, tzString) {
return new Date((typeof date === "string" ? new Date(date) : date).toLocaleString("en-US", {timeZone: tzString}));
}
這個函數需要:
- 日期,可以是 Date 對像或字符串
- 包含要轉換到的時區名稱的字符串
此函數的工作原理是從傳入的 Date 對像在所需的時區創建一個新的 Date 對象,並在必要時從字符串轉換傳入的日期。
要使用它來獲取另一個位置的當前時間,您只需傳遞一個新的 Date 對象,默認為當前時間:
var currentTime = new Date();
var currentTimeInAdelaide = timezoneConvert(currentTime, "Australia/Adelaide")
console.log(currentTimeInAdelaide.toLocaleString());
要轉換特定的日期/時間,可以傳遞一個字符串:
var convertedDate = timezoneConvert("2022/04/25 09:30:00 +0000", "Australia/Adelaide")
console.log(convertedDate.toLocaleString());
JavaScript 日期對象
上面的代碼使用了 JavaScript Date 對象——可以分配給變量來表示日期的特殊對象。日期對象包括某一時刻的具體細節,包括:
- 日期
- 時間
- 時區
Date 對像還包括用於檢索特定時刻的 UTC 時間的方法,以及用於檢索時區偏移的方法。這使得 Date 對象成為處理日期和時間的通用方式。
使用 Moment.js
不過,還有一種更簡單的方法。 Moment.js 是一個 JavaScript 庫,它使處理日期、時間和時區以及時間間隔變得異常容易。
在 Moment.js 中轉換時區就像使用 Moment Timezone 模塊一樣簡單:
var timeInNewYork = moment.tz("2033-05-01 12:30", "America/New_York");
將所有內容存儲為 UTC!
如果您將日期和時間存儲在數據庫或文件中以供以後檢索,則值得將所有內容存儲為 UTC,然後在顯示信息時轉換為用戶時區。這消除了歧義或混淆的任何可能性,並且意味著無論用戶位於何處,您的應用程序都是準確的。這對於 Web 應用程序尤其重要,因為您可能讓人們從世界各地登錄並相互交互。