簡體   English   中英

如何在 JavaScript 中獲得沒有夏令時的當前時區偏移量?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM