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

使用 JavaScript 将 GMT 时间转换为当地时间

Convert GMT to local time using JavaScript

使用toLocaleString()方法将 GMT 转换为本地时间,例如
new Date().toLocaleString(). 当没有参数传递给该方法时,它会返回一个根据访问者的区域设置和时区格式化的字符串。

索引.js
// 👇️ can be any valid GMT date/ date+time string const dateStr = 'Sat, 15 Jan 2021 09:24:00 GMT'; const date = new Date(dateStr); // 👇️ "Fri Jan 15 2021 11:24:00 GMT+0200 (Eastern European Standard Time)" console.log(date); // ✅ get date and time in the visitor's default locale console.log(date.toLocaleString()); // 👉️ "1/15/2021, 11:24:00 AM" // ✅ Get LOCAL (visitor's time zone) date and time components const hours = date.getHours(); console.log(hours); // 👉️ 11 const minutes = date.getMinutes(); console.log(minutes); // 👉️ 24 const seconds = date.getSeconds(); console.log(seconds); // 👉️ 0

我们使用
Date.toLocaleString
方法将 GMT 转换为语言环境时间。

当没有参数传递给该方法时,它会返回一个根据用户的默认区域设置和时区格式化的字符串。
索引.js
// 👇️ "1/15/2022, 11:42:10 AM" console.log(new Date().toLocaleString());

如果使用东欧标准时间时区运行这些方法,则上面的注释说明了格式。

您看到的输出会有所不同,具体取决于您的默认语言环境和默认时区。

请注意,您可以使用任何get*方法根据访问者的本地时间获取日期的任何日期和时间部分。

以下代码段中的所有方法都会根据访问者所在的时区返回日期/时间组件,并且在不同时区访问时会产生不同的结果。
索引.js
const date = new Date(); // 👇️ returns Hour of the date console.log(date.getHours()); // 👉️ 11 // 👇️ returns Minutes of the date console.log(date.getMinutes()); // 👉️ 46 // 👇️ returns Seconds of the date console.log(date.getSeconds()); // 👉️ 6 // 👇️ returns year of the date console.log(date.getFullYear()); // 👉️ 2022 // 👇️ returns month (0-11) // 0 is January, 11 is December console.log(date.getMonth()); // 👉️ 0 // 👇️ returns day of the month (1-31) console.log(date.getDate()); // 👉️ 15

所有get*方法都根据访问者的本地日期和时间返回日期或时间部分。

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

如果您需要完整的Date.get*方法列表,请访问
MDN 文档

您可以使用这些方法以多种不同方式为用户格式化本地日期和时间。

下面是一个将本地日期和时间格式化为
YYYY-MM-DD hh:mm:ss.

索引.js
function padTo2Digits(num) { return num.toString().padStart(2, '0'); } function formatDate(date) { return ( [ date.getFullYear(), padTo2Digits(date.getMonth() + 1), padTo2Digits(date.getDate()), ].join('-') + ' ' + [ padTo2Digits(date.getHours()), padTo2Digits(date.getMinutes()), padTo2Digits(date.getSeconds()), ].join(':') ); } const dateStr = 'Sat, 15 Jan 2021 09:24:00 GMT'; // 👇️ 2022-01-15 14:24:00 (yyyy-mm-dd hh:mm:ss) console.log(formatDate(new Date(dateStr)));

我们使用连字符分隔符连接日期的日期部分,使用冒号分隔符连接时间部分。

您可以重新排序日期组件,将分隔符更改为正斜杠或以适合您的用例的任何方式调整此功能。 /

请注意,您很可能不应该在数据库中存储本地日期和时间。

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

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

我们之前介绍的所有方法都有一个UTC等效get*方法,例如
getUTCFullYear

getFullYear

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

如果您需要完整的getUTC*方法列表,请访问
MDN 文档

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

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

发表评论