在 JavaScript 中獲取時區

Ammar Ali 2023年10月12日
  1. 使用 JavaScript 中的 Date() 函式和 slice() 函式獲取時區及其偏移量
  2. 使用 JavaScript 中的 Date() 函式和 getTimezoneOffset() 函式獲取時區偏移量
  3. 使用 JavaScript 中的 DateTimeFormat() 函式獲取時區
在 JavaScript 中獲取時區

本教程討論如何使用 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 時區,它與所有現代瀏覽器相容。

作者: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook

相關文章 - JavaScript Date