使用JavaScript在一个特定时区内抵消DST的时间

Sha*_*non 7 javascript timezone dst

如果它目前在太平洋时区的DST,我需要将时间抵消一个小时.无论用户的当地时区如何,我如何确定太平洋时区的当前夏令时状态?

这是我到目前为止所拥有的.第4行中的"dst"只是一个函数的占位符,它可以告诉我该区域的夏令时是否有效.

function checkTime() {  
    var d = new Date();  
    var hour = d.getUTCHours();  
    var offset = dst ? 7 : 8; // is pacific time currently in daylight savings?

    // is it currently 6 AM, 2 PM, or 10 PM?
    if (hour === ((6 + offset) % 24) || hour === ((14 + offset) % 24) || hour === ((22 + offset) % 24)) {  
      // do stuff
    }
}

checkTime();
Run Code Online (Sandbox Code Playgroud)

Rog*_*cks 2

您能够确定的唯一真正方法是您可以询问的服务器上是否有 DST 信息(包括任何更新)。用户的 PC 甚至不需要安装时区信息。

然后您需要一个“动态”脚本来获取 DST 状态。

可能的方法: 引用生成 JavaScript 的 PHP/ASPX/JSP/CFM/ASP 页面来设置一个变量,该变量指示 DST 是否处于活动状态,或者当前的分钟偏移量。

直接在您的(希望是动态的)页面中编写脚本。

使用 AJAX/REST/JSON 访问某处的日期/时间服务,该服务可以告诉您时区/位置的 DST 状态或与 UTC 的分钟数偏移。

分钟比小时更可取,因为世界各地的 DST 偏移实际上以分钟为单位,而不是小时。