使用 JavaScript 将本地时间转换为 EST

使用 JavaScript 将本地时间转换为 EST

Convert local time to EST using JavaScript

使用toLocaleString()方法将本地时间转换为 EST,例如
date.toLocaleString('en-US', {timeZone: 'America/New_York'}).
toLocaleString方法根据提供的时区返回表示日期和时间的字符串。

索引.js
const date = new Date(); // ✅ Get EST date time string // "1/27/2022, 2:45:30 AM" console.log( date.toLocaleString('en-US', { timeZone: 'America/New_York', }), ); // ✅ Get EST date object function changeTimeZone(date, timeZone) { if (typeof date === 'string') { return new Date( new Date(date).toLocaleString('en-US', { timeZone, }), ); } return new Date( date.toLocaleString('en-US', { timeZone, }), ); } // 👇️ Thu Jan 27 2022 02:45:30 console.log(changeTimeZone(new Date(), 'America/New_York'));

toLocaleString
方法返回一个特定于区域设置的字符串,该字符串已根据提供的时区进行调整

我们的第一个示例展示了如何获取 EST 中的日期字符串。

changeTimeZone函数可以传递一个日期字符串或一个对象,并返回一个对象,该对象的日期和时间与提供的时区(示例中的 EST)相对应。 DateDate

我们传递给该toLocaleString方法的两个参数是:

  1. locales– 带有 BCP 47 语言标记的字符串或此类字符串的数组。您可以使用任何可用的语言环境,例如es-MX墨西哥或en-CA
    加拿大。
    如果您需要有关此参数的更多信息,请查看
    MDN 文档
  2. options我们在其中指定timeZone属性的对象。在MDN 文档中阅读有关该options对象的
    更多信息

您可以通过访问此维基百科页面找到国家代码和时区数据库名称的
表格

但是,请注意,DateJavaScript 中的对象不存储时区,它存储的时间戳表示自 1970 年 1 月 1 日午夜以来经过的毫秒数。

对象的日期和时间Date对应时区,但是
Date对象没有办法存储具体的时区。

出于这个原因,最好使用toLocaleString方法获取表示时区的字符串,并使用options 对象参数根据您的需要格式化字符串。

您可以使用该方法options对象
的不同属性
toLocaleString以不同方式为 EST 时区设置日期和时间格式。

索引.js
const date = new Date(); // 👇️ "Thursday, January 27, 2022 at 2:54:00 AM" console.log( date.toLocaleString('en-US', { timeZone: 'America/New_York', dateStyle: 'full', timeStyle: 'full', }), );

我们将对象中
dateStyletimeStyle属性设置为以获得更详细的日期和时间表示。optionsfull

这两个属性的其他可能值是longmediumshort

索引.js
const date = new Date(); // 👇️ "January 27, 2022 at 2:54 AM" console.log( date.toLocaleString('en-US', { timeZone: 'America/New_York', dateStyle: 'long', timeStyle: 'short', }), );

options您可以通过访问
MDN 文档查看该对象实现的所有属性和值

这是一个将月、日、小时、分钟和秒显示为 2 位数字的示例,即使它们的值小于10

索引.js
const date = new Date(); // 👇️ "01/27/2022, 02:55:50 AM EST" console.log( date.toLocaleString('en-US', { timeZone: 'America/New_York', year: 'numeric', month: '2-digit', day: '2-digit', hour: '2-digit', minute: '2-digit', second: '2-digit', timeZoneName: 'short', }), );

通过将日期和时间组件的值设置为2数字,我们可以一致地格式化它们,即使它们的值小于10.

如果是这种情况,这些值将用前导零填充。

我们还将该timeZoneName属性的值设置为short,以在结果末尾显示时区名称的缩写。

您可以通过访问MDN 文档options查看该对象支持的
所有其他属性

只需使用该方法,您就可以获得以多种不同方式格式化的时区特定日期和时间表示形式toLocaleString,这应该是您的首选方法,因为它利用了内置功能。

发表评论