JavaScript - 检查不同时区的夏令时是否生效

5
在javascript中,有许多解决方案可用于检查日期是否处于夏令时 [如何检查DST(夏令时)是否生效以及它的偏移量是多少?]。但是这些解决方案仅适用于与夏令时生效的时区相同的人,例如,假设我的当前浏览器(客户端)处于IST(印度标准时间-没有夏令时变化),我想检查日期是否在ET(东部时间)夏令时-5和标准时间-4)。上面的解决方案(来自链接)只有在我的系统时区为ET而不是IST时才会给出正确的结果。如何计算呢?
2个回答

5
如果你使用 moment.js 和它的伙伴 timezome 脚本,它们会让检查DST变得非常容易:
查看它们的isDST()文档 仅供娱乐,这里有一个测试每个时区的小工具

if( moment.tz("America/New_York").isDST() ){
    $('#test').append('NY is currently in DST');
}
else{
    $('#test').append('NY is NOT currently in DST');
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/moment.js/2.8.3/moment.min.js"></script>
<script src="http://momentjs.com/downloads/moment-timezone-with-data.min.js"></script>



<div id="test"></div>


这会抛出一个错误: "TypeError: undefined is not an object (evaluating 'g.apply')",位于moment-timezone-with-data.min.js中。 :-( - RobG

2

您可以使用Luxon库来检查特定区域是否处于夏令时。您只需要时区字符串即可检查夏令时是否激活。

首先从Luxon导入DateTime。

import { DateTime } from "luxon";

接着检查时区中夏令时是否启用

if (DateTime.local().setZone(timezone).isInDST) {
  console.log("Dst is active in ", timezone)
}
else {
  console.log("Dst is NOT active in ", timezone)
}

其中timezone是您要查找的时区。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接