如何在 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() 方法。