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

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

Convert local time to UTC using JavaScript

使用toUTCString()方法将本地时间转换为 UTC,例如
new Date().toUTCString()toUTCString()方法使用 UTC 时区将日期转换为字符串。

索引.js
const date = new Date(); // 👇️ Sat Jan 15 2022 16:49:31 GMT+0200 console.log(date); const utcStr = date.toUTCString(); console.log(utcStr); // 👉️ "Sat, 15 Jan 2022 14:49:31 GMT" // 👇️ "14:49:31" console.log( [ padTo2Digits(date.getUTCHours()), padTo2Digits(date.getUTCMinutes()), padTo2Digits(date.getUTCSeconds()), ].join(':'), ); function padTo2Digits(num) { return num.toString().padStart(2, '0'); }

我们使用
toUTCString
将本地时间转换为 UTC。

date变量以我的本地时间存储日期,即 UTC+0200。

当我将日期和时间转换为 UTC 时,我得到的结果晚了 2 小时,因为我的时区(东欧标准时间)比 UTC 晚了 2 小时。

如果您需要一个Date包含 UTC 时间而不是字符串的新对象,请改用此方法。

索引.js
const date = new Date(); const utcDate = new Date(localDate.toUTCString().slice(0, -4));
我们基本上切掉了GMTUTC 字符串的一部分,并将结果传递给Date()构造函数。

您还可以使用该toISOString()方法获取 ISO 8601 格式的字符串YYYY-MM-DDTHH:mm:ss.sssZ

Z格式末尾的 表示 UTC,即与 UTC 的零小时、分钟和秒的偏移量

索引.js
const date = new Date(); const isoStr = date.toISOString(); console.log(isoStr); // 👉️ "2022-01-15T14:49:31.612Z"

toISOString方法根据通用时间返回表示 ISO 8601 格式日期的字符串。

ISO 8601 格式的字符串通常用于在服务器上存储日期和时间。

如果只需要 UTC 时间,可以使用以下函数,将 UTC 时间格式化为hh:mm:ss.

索引.js
const date = new Date(); function padTo2Digits(num) { return num.toString().padStart(2, '0'); } function getGMTTime(date = new Date()) { return [ padTo2Digits(date.getUTCHours()), padTo2Digits(date.getUTCMinutes()), padTo2Digits(date.getUTCSeconds()), ].join(':'); } console.log(getGMTTime()); // 👉️️ "14:49:31"

我们创建了一个可重用的函数,它返回 GMT 时间,格式为
hh:mm:ss.

默认情况下,该函数采用一个Date对象,但如果未提供,则返回当前 UTC 时间。

getUTCHours

方法根据通用时间返回指定日期的小时 (0 – 23)

getUTCMinutes

方法根据通用时间返回日期中的分钟 (0 – 59)

getUTCSeconds

方法根据通用时间返回日期中的秒数 (0 – 59)

如果您需要使用任何其他getUTC*方法,例如getUTCMonth,请访问
MDN 文档

在函数中,我们确保将小时、秒和分钟显示为 2 位数字,即使它们小于10.

默认情况下,如果任何值小于10,方法将返回一个数字,这不是我们想要的。

如有必要,我们会填充结果并用冒号分隔符连接它们。

您可以根据您的用例进行调整,例如在格式化字符串中包含年、月、日值。

这些方法中的每一个都有一个非 UTC 等效方法,例如
getUTCFullYear

getFullYear

这些getUTC*方法根据世界时间返回日期或时间部分,而这些get*方法根据本地时间(访问者计算机所在的时区)返回它们。

这些get*方法根据用户访问您网站的位置返回不同的结果。

例如,如果您在数据库中存储当地时间午夜 (00:00),您将不知道在东京(日本)、巴黎(法国)、纽约(美国)等地是否是午夜。这些都是相隔数小时的不同时刻。

为了保持一致性,当您必须向用户呈现日期和时间时,您应该主要使用本地时间,但以 UTC 格式存储实际值。

发表评论