如何在JavaScript中将日期转换为另一个时区?
JavaScript有一个新的Date()构造函数,用于创建日期对象以获取当前日期和时间。该日期对象使用UTC时区或客户端浏览器的时区,即您在印度并使用新的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 object
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>将日期转换为美国/纽约时区的JavaScript</title>
</head>
<body>
<h3>使用format()方法将日期转换成美国/纽约时区</h3>
<p id="input">本地时间:</p>
<p id="output">美国/纽约时区:</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()方法少。