使用 JavaScript 将 GMT 时间转换为当地时间
Convert GMT to local time using JavaScript
使用toLocaleString()
方法将 GMT 转换为本地时间,例如
new Date().toLocaleString()
. 当没有参数传递给该方法时,它会返回一个根据访问者的区域设置和时区格式化的字符串。
// 👇️ 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 转换为语言环境时间。
// 👇️ "1/15/2022, 11:42:10 AM" console.log(new Date().toLocaleString());
如果使用东欧标准时间时区运行这些方法,则上面的注释说明了格式。
您看到的输出会有所不同,具体取决于您的默认语言环境和默认时区。
请注意,您可以使用任何get*
方法根据访问者的本地时间获取日期的任何日期和时间部分。
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
.
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 格式存储实际值。
我们之前介绍的所有方法都有一个UTC
等效get*
方法,例如
getUTCFullYear
与
getFullYear。
所有getUTC*
方法都根据通用时间返回日期或时间部分。
如果您需要完整的getUTC*
方法列表,请访问
MDN 文档。
这些getUTC*
方法根据世界时间返回日期或时间部分,而这些get*
方法根据本地时间(访问者计算机所在的时区)返回它们。
这些get*
方法根据用户访问您网站的位置返回不同的结果。