使用 JavaScript 将日期转换为 UTC

使用 JavaScript 将日期转换为 UTC

Convert a Date to UTC using JavaScript

使用该toUTCString()方法将日期转换为 UTC,例如
new Date(localDate.toUTCString().slice(0, -4)). toUTCString()方法使用 UTC 时区将日期转换为字符串。

索引.js
const localDate = new Date(); // 👇️ Sat Jan 15 2022 15:27:13 GMT+0200 (Eastern European Standard Time) console.log(localDate); // ✅ Convert the Date object to UTC const utcDate = new Date(localDate.toUTCString().slice(0, -4)); // 👇️ Sat Jan 15 2022 13:27:13 GMT+0200 console.log(utcDate); // ✅ Get the UTC (string) representation of a Date const utcString = localDate.toUTCString(); console.log(utcString); // 👉️ "Sat, 15 Jan 2022 13:27:13 GMT" // ✅ Get an ISO 8601 formatted UTC string of the date console.log(localDate.toISOString()); // 👉️ "2022-01-15T13:27:13.893Z"

在第一个示例中,我们使用
toUTCString
方法将日期对象转换为 UTC。

我们基本上切掉了GMT字符串的一部分并将结果传递给
Date()
构造函数。

utcDate变量存储一个Date落后 2 小时的对象
localDate这是因为 UTC 比我的时区(东欧标准时间)晚两个小时。

如果您需要将日期转换为使用 UTC 时区的字符串,请
toUTCString()直接使用该方法。

索引.js
const localDate = new Date(); // 👇️ Sat Jan 15 2022 15:27:13 GMT+0200 (Eastern European Standard Time) console.log(localDate); // ✅ Get the UTC representation of a Date const utcString = localDate.toUTCString(); console.log(utcString); // 👉️ "Sat, 15 Jan 2022 13:27:13 GMT"

toUTCString()方法返回一个字符串,该字符串表示使用 UTC 时区的给定日期。

GMT 以上代码片段的结果。

GMT 和 UTC 共享相同的当前时间。

它们的区别在于,GMT是一个时区,而UTC是一个时间标准,是世界范围内时区的基础。

UTC 和 GMT 不会因夏令时 (DST) 而改变,并且始终共享相同的当前时间。

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

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

索引.js
const localDate = new Date(); // 👇️ "Sat Jan 15 2022 15:27:13 GMT+0200 (Eastern European Standard Time)" console.log(localDate); // ✅ Get an ISO 8601 formatted UTC string of the date console.log(localDate.toISOString()); // 👉️ "2022-01-15T13:27:13.893Z"

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

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

您还可以使用getUTC*根据通用时间返回日期和时间组件的可用方法。

它们非常有用,使我们能够使用字符串连接以多种不同方式格式化日期和时间。
索引.js
const date = new Date(); // 👉️ "Sat Jan 15 2022 16:05:47 GMT+0200" console.log(date); // 👇️ returns UTC year of the date console.log(date.getUTCFullYear()); // 👉️ 2022 // 👇️ returns UTC month (0-11) // 0 is January, 11 is December console.log(date.getUTCMonth()); // 👉️ 0 // 👇️ returns UTC day of the month (1-31) console.log(date.getUTCDate()); // 👉️ 15 // 👇️ returns UTC Hour of the date console.log(date.getUTCHours()); // 👉️ 14 // 👇️ returns UTC Minutes of the date console.log(date.getUTCMinutes()); // 👉️ 5 // 👇️ returns UTC Seconds of the date console.log(date.getUTCSeconds()); // 👉️ 47

所有getUTC*方法都根据通用时间返回日期或时间部分。

您可以使用这些值以适合您的用例的方式格式化 UTC 日期。

请注意,
getUTCMonth
方法返回指定日期的月份作为从零开始的值(0 = 一月,1 = 二月,等等)

这是一个使用getUTC*方法将 a 格式化Date
的示例
YYYY-MM-DD hh:mm:ss

索引.js
function padTo2Digits(num) { return num.toString().padStart(2, '0'); } function formatDate(date) { return ( [ date.getFullYear(), padTo2Digits(date.getUTCMonth() + 1), padTo2Digits(date.getUTCDate()), ].join('-') + ' ' + [ padTo2Digits(date.getUTCHours()), padTo2Digits(date.getUTCMinutes()), padTo2Digits(date.getUTCSeconds()), ].join(':') ); } // 👇️ "2022-01-15 14:09:41" console.log(formatDate(new Date()));

我们创建了一个可重用函数,将日期和时间格式化为
YYYY-MM-DD hh:mm:ss使用 UTC 时间标准。

您可以重新排序日期组件,将分隔符更改为正斜杠,或进行适合您的用例的任何其他更改。 /

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

getFullYear

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

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

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

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

发表评论