使用 JavaScript 将本地时间转换为 UTC
Convert local time to UTC using JavaScript
使用toUTCString()
方法将本地时间转换为 UTC,例如
new Date().toUTCString()
。该toUTCString()
方法使用 UTC 时区将日期转换为字符串。
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。
如果您需要一个Date
包含 UTC 时间而不是字符串的新对象,请改用此方法。
const date = new Date(); const utcDate = new Date(localDate.toUTCString().slice(0, -4));
GMT
UTC 字符串的一部分,并将结果传递给Date()
构造函数。您还可以使用该toISOString()
方法获取 ISO 8601 格式的字符串YYYY-MM-DDTHH:mm:ss.sssZ
。
Z
格式末尾的 表示 UTC,即与 UTC 的零小时、分钟和秒的偏移量。
const date = new Date(); const isoStr = date.toISOString(); console.log(isoStr); // 👉️ "2022-01-15T14:49:31.612Z"
该toISOString
方法根据通用时间返回表示 ISO 8601 格式日期的字符串。
如果只需要 UTC 时间,可以使用以下函数,将 UTC 时间格式化为hh:mm:ss
.
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*
方法根据用户访问您网站的位置返回不同的结果。
为了保持一致性,当您必须向用户呈现日期和时间时,您应该主要使用本地时间,但以 UTC 格式存储实际值。