如何在 JavaScript 中将日期转换为其他时区?


JavaScript 具有一个新的 Date() 构造函数,用于创建日期对象以获取当前日期和时间。此日期对象使用 UTC 时区或客户端浏览器的时区,即如果您在印度并使用 new Date() 构造函数获取日期和时间,您将获得本地时间。但有时,我们可能需要获取另一个国家的时区,而我们无法直接做到这一点。这些可以通过使用 toLocaleString() 方法或 format() 方法来完成。在本文结束时,您将能够在 JavaScript 中获取任何其他时区的日期。

我们在本文中将使用的两种将日期转换为另一个时区的方法如下:

  • 使用 toLocaleString() 方法

  • 使用 format() 方法

使用 toLocaleString() 方法

toLocaleString() 方法可以使用日期对象调用。此方法能够根据传递的参数将数据从一个时区转换为另一个时区。它接受两个参数,第一个是“locale”,即应使用其格式约定语言,对于英语它是“en-US”,第二个是“options”,对于我们来说是 {timeZone:"countryName"},其中 countryName 是我们想要更改时区的国家/地区的名称。

以下是使用 toLocaleString() 方法在 JavaScript 中将日期转换为其他时区的逐步过程。

  • 使用 Date 构造函数创建日期对象

  • 将日期对象与 toLocaleString() 方法一起使用,并将第一个参数作为 'en-US' 用于英语日期和时间格式,并将第二个参数 {timeZone: "America/New_York"} 用于获取纽约的时区

  • 将此方法返回的值存储到一个变量中,该变量是我们所需的时区。

示例

在此示例中,我们使用 toLocaleString() 方法在 JavaScript 中将日期转换为其他时区。

<!DOCTYPE html>
<html lang="en">
<head>
   <title>Converting date to another timezone in JavaScript</title>
</head>
<body>
   <h3>Convert date to America/New_York Time Zone using toLocaleString() Method</h3>
   <p id="input">Local Time: </p>
   <p id="output">America/New_York Time Zone: </p>
   <script>
      // date objec
      let date = new Date();
      document.getElementById("input").innerText += date ;
      
      // convert date to another timezone
      let output = date.toLocaleString("en-US", {
         timeZone: "America/New_York"
      });
      
      // display the result
      document.getElementById("output").innerText += output;
   </script>
</body>
</html>

使用 Format() 方法

我们可以将 format() 方法与“Intl.DateTimeFormat”对象一起使用,并将作为参数传递给 format() 方法的日期对象用于将时区转换为在创建“Intl.DateTimeFormat”对象时传递的时区。听起来很复杂,但如果您查看下面的示例,它非常简单。

以下是使用 format() 方法在 JavaScript 中将日期转换为其他时区的逐步过程。

  • 使用 Date 构造函数创建日期对象。

  • 创建“Intl.DateTimeFormat”对象,同时将第一个参数作为 'en-US' 用于英语日期和时间格式,并将第二个参数 {timeZone: "America/New_York"} 用于获取纽约的时区。

  • 使用此对象使用 format() 方法并将日期对象作为参数传递,并将其存储在一个变量中,该变量是我们所需的时区。

示例

在此示例中,我们使用 format() 方法在 JavaScript 中将日期转换为其他时区。

<!DOCTYPE html>
<html lang="en">
<head>
   <title>Convert date to America/New_York timezone in JavaScript</title>
</head>
<body>
   <h3>Convert date to America/New_York timezone using format() Method</h3>
   <p id="input">Local Time: </p>
   <p id="output">America/New_York Time Zone: </p>
   <script>
      // date objec
      let date = new Date();
      document.getElementById("input").innerText += date ;
      
      // create a new date object
      let newObj = Intl.DateTimeFormat('en-US', {
         timeZone: "America/New_York"
      })
      
      // convert date to another timezone
      let newDate = newObj.format(date);
      
      // display the result
      document.getElementById("output").innerHTML += newDate;
   </script>
</body>
</html>

总结

让我们总结一下在本教程中学到的内容。我们看到我们有两种方法可以将日期转换为其他时区,第一种是使用日期对象的 toLocaleString() 方法,第二种是使用“Intl.DateTimeFormat”对象的 format() 方法。两种方法都有不同的用例,您可以根据需要选择。我们推荐使用 toLocaleString() 方法,它易于使用,并且所需的代码行数少于使用“Intl.DateTimeFormat”对象的 format() 方法。

更新于: 2023-04-21

9K+ 阅读量

开启你的 职业生涯

通过完成课程获得认证

立即开始
广告