我一直在使用一個 api,它以 UTC 偏移量(如“7000”)以秒為單位回傳時間,我試圖傳遞到“2020-01-01T01:56:40.000Z”之類的日期或“1:12”之類的時間:03 下午'
我已經嘗試過了,但回傳了錯誤的日期,就好像我在給它一個毫秒值一樣
var utcSeconds = 7000;
var d = new Date(7000);
console.log(d); // 1970-01-01T00:00:07.000Z
我在網上只能看到相反的程式或不同的程式,希望你能幫助我,謝謝!
uj5u.com熱心網友回復:
一種方法是找到與您從 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; }
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/481369.html
標籤:javascript 日期 时间 时区 世界标准时间
