Javascript 中的 UTC 偏移量(以秒为单位)
UTC Offset in Seconds to Date in Javascript
我一直在使用 api returns UTC 时间偏移量,如“7000”秒,我试图传递到像“2020-01-01T01”这样的日期:56:40.000Z' 或像 '1:12:03 PM' 这样的时间
我已经试过了,但是 returns 一个错误的日期,好像我给它一个以毫秒为单位的值
var utcSeconds = 7000;
var d = new Date(7000);
console.log(d); // 1970-01-01T00:00:07.000Z
我在网上看到的都是相反的程序或不同的程序,
希望你能帮助我,谢谢!
实现此目的的一种方法是找到与您从 API 获得的 UTC 偏移相匹配的规范 IANA 时区。这些看起来像 'Etc/GMT-9' 并且具有固定的 UTC 偏移量。 (参见 List of tz database timezones
)
一旦我们有了这个时区,我们就可以使用 Date.toLocaleTimeString()
来格式化当地时间。
我们可以将所有这些封装在一个函数中 formatLocalTime()
,它将显示该 UTC 偏移量的时间。
function getIANATimezone(utcOffsetSeconds) {
const utcOffsetHours = Math.abs(utcOffsetSeconds / 3600);
const sign = (utcOffsetSeconds < 0 ) ? '+': '-';
return `Etc/GMT${sign}${utcOffsetHours}`;
}
function formatLocalTime(utcOffsetSeconds) {
const timeZone = getIANATimezone(utcOffsetSeconds);
return new Date().toLocaleTimeString('en-US', { timeZone });
}
const utcOffsets = [32400,-25200, 0, 3600];
console.log('UTC Offset(s)\tLocal time')
for(let utcOffset of utcOffsets) {
console.log(utcOffset + '', '\t\t', formatLocalTime(utcOffset))
}
.as-console-wrapper { max-height: 100% !important; }
我一直在使用 api returns UTC 时间偏移量,如“7000”秒,我试图传递到像“2020-01-01T01”这样的日期:56:40.000Z' 或像 '1:12:03 PM' 这样的时间
我已经试过了,但是 returns 一个错误的日期,好像我给它一个以毫秒为单位的值
var utcSeconds = 7000;
var d = new Date(7000);
console.log(d); // 1970-01-01T00:00:07.000Z
我在网上看到的都是相反的程序或不同的程序, 希望你能帮助我,谢谢!
实现此目的的一种方法是找到与您从 API 获得的 UTC 偏移相匹配的规范 IANA 时区。这些看起来像 'Etc/GMT-9' 并且具有固定的 UTC 偏移量。 (参见 List of tz database timezones
)
一旦我们有了这个时区,我们就可以使用 Date.toLocaleTimeString()
来格式化当地时间。
我们可以将所有这些封装在一个函数中 formatLocalTime()
,它将显示该 UTC 偏移量的时间。
function getIANATimezone(utcOffsetSeconds) {
const utcOffsetHours = Math.abs(utcOffsetSeconds / 3600);
const sign = (utcOffsetSeconds < 0 ) ? '+': '-';
return `Etc/GMT${sign}${utcOffsetHours}`;
}
function formatLocalTime(utcOffsetSeconds) {
const timeZone = getIANATimezone(utcOffsetSeconds);
return new Date().toLocaleTimeString('en-US', { timeZone });
}
const utcOffsets = [32400,-25200, 0, 3600];
console.log('UTC Offset(s)\tLocal time')
for(let utcOffset of utcOffsets) {
console.log(utcOffset + '', '\t\t', formatLocalTime(utcOffset))
}
.as-console-wrapper { max-height: 100% !important; }