在 JavaScript 中获取时区

Ammar Ali 2023年1月30日 2021年10月2日
  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 时区,它与所有现代浏览器兼容。

Author: 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