在javascript中,有许多解决方案可用于检查日期是否处于夏令时 [如何检查DST(夏令时)是否生效以及它的偏移量是多少?]。但是这些解决方案仅适用于与夏令时生效的时区相同的人,例如,假设我的当前浏览器(客户端)处于IST(印度标准时间-没有夏令时变化),我想检查日期是否在ET(东部时间)夏令时-5和标准时间-4)。上面的解决方案(来自链接)只有在我的系统时区为ET而不是IST时才会给出正确的结果。如何计算呢?
moment.js
和它的伙伴 timezome
脚本,它们会让检查DST变得非常容易: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>
您可以使用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是您要查找的时区。