有數百篇關于 Javascript 時間問題的帖子,我確信這個問題已經得到解決,但到目前為止我已經瀏覽了幾十篇帖子,沒有一個回答我的具體問題。我知道偏移量(-7),并且在美國(亞利桑那州)的這個特定州沒有 DST。我只想向任何用戶顯示亞利桑那州的時間。我審查過的所有帖子似乎都暗示我需要使用
return new Date().getTimezoneOffset();
從本地計算機作為我計算的一部分,但我不確定為什么需要這樣做?這會是一個可行的解決方案嗎?
const now = new Date();
return {
hour: (now.getUTCHours() -7)
minute: now.getMinutes(),
};
uj5u.com熱心網友回復:
亞利桑那州目前沒有夏令時,但這并不意味著永遠不會有。當然,不太可能——但并非不可能。
一個更強大的解決方案,也考慮了用戶的區域設定格式偏好,如下所示:
const s = new Date().toLocaleTimeString(undefined, {
timeZone: 'America/Phoenix'
});
console.log(s);
這將適用于任何IANA 時區識別符號,在適用時考慮 DST,或不考慮 - 取決于時區。
如果您想要問題中的確切輸出,請嘗試以下操作:
const s = new Date().toLocaleString('en', {
timeZone: 'America/Phoenix',
hour12: false,
hour: 'numeric',
minute: 'numeric'
});
const p = s.split(':');
const o = {
hour: parseInt(p[0]),
minute: parseInt(p[1])
};
console.log(o);
uj5u.com熱心網友回復:
你不需要getTimezoneOffset,但是當小時數小于 7 時你需要處理這種情況:
const now = new Date();
console.log( {
hour: ((now.getUTCHours() -7) % 24),
minute: now.getMinutes(),
});
uj5u.com熱心網友回復:
您可以使用Intl物件和 Etc 偽時區作為固定偏移量。EMCAScript 版本僅支持整小時偏移,符號與約定相反。
例如
console.log('Current time in UTC-7: '
new Date().toLocaleString('default',{timeZone:'Etc/GMT 7', hour:'numeric', minute:'2-digit'})
);
console.log('Current time in UTC-7: '
new Date().toLocaleTimeString('default',{timeZone:'Etc/GMT 7'})
);
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/516240.html
