javascript中有许多解决方案可以检查日期是否在白天[如何检查DST(夏令时)是否有效,如果偏移量是多少?
但是,只有当某人处于适用日光效果的同一时区时,该解决方案才有效,前任。假设我当前的浏览器(客户端)是 IST(印度标准 - 没有日光时间变化),我想检查 ET 的日期是否为日光(东部时间 - 其中日光为 -5,标准为 -4)。上述解决方案(来自链接)只有在我的系统时区为 ET 而不是 IST 时才会给我正确的结果。
我该如何计算?
使用 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>
您可以使用 luxon 库检查 DST 是否在特定区域处于活动状态。 您所需要的只是时区字符串,您可以检查 DST 是否处于活动状态。
所以首先从卢克森导入日期时间
import { DateTime } from "luxon";
然后检查 DST 在时区中是否处于活动状态
if (DateTime.local().setZone(timezone).isInDST) {
console.log("Dst is active in ", timezone)
}
else {
console.log("Dst is NOT active in ", timezone)
}
其中时区是您正在寻找的时区。