![](/img/trans.png)
[英]JavaScript Time Zone is wrong for past Daylight Saving Time transition rules
[英]How do I get the current Time Zone offset without the daylight saving in JavaScript?
我的瀏覽器在芝加哥。 使用(new Date()).getTimezoneOffset()/60
時,我得到 5 小時,因為我們現在處於夏令時。
我需要一份聲明來返回 6,因為芝加哥在“(GMT-06:00) Central Time”
無論夏令時如何,我都需要為所有美國時區用戶獲取偏移量。 如果他們希望他們的請求結果在不同的時區交付,我需要向我的用戶顯示美國時區的下拉列表。 默認應該是當前的。 我將使用三角洲。 如何在 JavaScript 中獲得沒有夏令時的當前時區偏移量?
如果重要,我正在使用 React。 還有“date-fns”,但沒有看到獲得它的方法。
謝謝你。
如果您只關心瀏覽器的偏移量,您可以明確聲明夏令時不生效的日期。
這總是返回夏季偏移量:
new Date('August 1, 2000 00:00:00').getTimezoneOffset()
這總是返回冬季偏移量:
new Date('November 1, 2000 00:00:00').getTimezoneOffset()
我認為您從錯誤的角度解決了這個問題。
Javascript 允許根據每個時區直接給出時間
清單在這里:
https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
示例代碼
const tzUSA = document.getElementById('Times-Zones-USA'); tzUSA.add = (zoneLib,timVal) => { let newRow = tzUSA.insertRow() newRow.insertCell().textContent = timVal newRow.insertCell().textContent = zoneLib } const OptsZ = timZ =>( { hour12:true, timeZone: timZ }); let nowD = new Date() tzUSA.add( 'Chicago central (GMT+6)', nowD.toLocaleString('en-US', OptsZ('Etc/GMT+6') )) tzUSA.add( 'Chicago', nowD.toLocaleString('en-US', OptsZ('America/Chicago') )) tzUSA.add( 'Denver', nowD.toLocaleString('en-US', OptsZ('America/Denver') )) tzUSA.add( 'Phoenix', nowD.toLocaleString('en-US', OptsZ('America/Phoenix') )) tzUSA.add( 'Los Angeles', nowD.toLocaleString('en-US', OptsZ('America/Los_Angeles') )) tzUSA.add( 'Anchorage', nowD.toLocaleString('en-US', OptsZ('America/Anchorage') )) tzUSA.add( 'Honolulu', nowD.toLocaleString('en-US', OptsZ('Pacific/Honolulu') ))
td { padding: 0.1em.7em;} td:first-child { text-align: right;}
<table id="Times-Zones-USA"></table>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.