在 JavaScript 中獲取時區
-
使用 JavaScript 中的
Date()
函式和slice()
函式獲取時區及其偏移量 -
使用 JavaScript 中的
Date()
函式和getTimezoneOffset()
函式獲取時區偏移量 -
使用 JavaScript 中的
DateTimeFormat()
函式獲取時區
本教程討論如何使用 Date()
函式以及 JavaScript 中的 slice()
、getTimezoneOffset()
和 DateTimeFormat()
函式獲取時區及其偏移量。
使用 JavaScript 中的 Date()
函式和 slice()
函式獲取時區及其偏移量
我們可以使用 Date()
函式來查詢時區及其偏移量,但它也會返回日期和時間。例如,讓我們使用 Date()
函式來獲取當前日期、時間、偏移量和時區。請參考下面的程式碼。
var MyDate = new Date();
console.log(MyDate);
輸出:
Wed Jun 23 2021 08:29:17 GMT+0500 (Pakistan Standard Time)
在輸出中,你可以看到 Date()
函式返回了當前日期、時間、偏移量和時區。如果只想獲取時區或偏移量,則必須將輸出轉換為字串以對其進行切片以獲得所需的輸出。
要將其轉換為字串,我們可以使用 toTimeString()
函式,該函式將返回時間、偏移量和時區。之後,我們可以使用 slice
函式來獲得我們想要的輸出。例如,讓我們從上面的輸出中獲取時區偏移量。請參考下面的程式碼。
var MyDate = new Date();
console.log(MyDate);
var MyString = MyDate.toTimeString();
console.log(MyString);
var MyOffset = MyString.slice(9, 17);
console.log(MyOffset);
輸出:
Wed Jun 23 2021 08:29:17 GMT+0500 (Pakistan Standard Time)
08:39:52 GMT+0500 (Pakistan Standard Time)
GMT+0500
在輸出中,第二行由 toTimeString()
函式返回,第三行由 slice()
函式返回。slice()
函式的第一個和第二個引數是我們想要切片的字元的位置。
例如,slice(9,17)
函式將從第 9 個字元開始切片,直到第 17 個字元。如果你不定義第二個引數,該函式將切片直到字串的最後一個字元。
使用 JavaScript 中的 Date()
函式和 getTimezoneOffset()
函式獲取時區偏移量
我們可以使用 Date()
函式和 getTimezoneOffset()
函式來獲取時區偏移量。此方法將以分鐘為單位返回時區偏移量。請參考下面的示例程式碼進行演示。
var MyDate = new Date();
console.log(MyDate);
var MyOffset = MyDate.getTimezoneOffset();
console.log(MyOffset);
輸出:
Wed Jun 23 2021 08:29:17 GMT+0500 (Pakistan Standard Time)
-300
正如你在輸出中看到的,第二行是以分鐘為單位的時區偏移量。它與第一行不同,因為在那裡,偏移量以小時為單位。你也可以將其除以 -60 將其轉換為小時。請參考下面的程式碼。
var MyDate = new Date();
console.log(MyDate);
var MyOffset = (MyDate.getTimezoneOffset()) / -60;
console.log(MyOffset);
輸出:
Wed Jun 23 2021 08:29:17 GMT+0500 (Pakistan Standard Time)
5
正如你在輸出中看到的,兩行中的偏移量相等。請注意,getTimezoneOffset()
函式將僅返回偏移量,而不是 UTC 或 GMT。
使用 JavaScript 中的 DateTimeFormat()
函式獲取時區
我們可以使用 DateTimeFormat()
函式來獲取 JavaScript 中的時區。例如,請參考下面的程式碼。
var MyTimeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;
console.log(MyTimeZone);
輸出:
UTC
Intl
返回 IANA 時區,它與所有現代瀏覽器相容。