如何检查DST(夏令时)是否有效以及偏移量是多少?

这是我的JS代码所需要的:

var secDiff = Math.abs(Math.round((utc_date-this.premiere_date)/1000));

this.years = this.calculateUnit(secDiff,(86400*365));

this.days = this.calculateUnit(secDiff-(this.years*(86400*365)),86400);

this.hours = this.calculateUnit((secDiff-(this.years*(86400*365))-(this.days*86400)),3600);

this.minutes = this.calculateUnit((secDiff-(this.years*(86400*365))-(this.days*86400)-(this.hours*3600)),60);

this.seconds = this.calculateUnit((secDiff-(this.years*(86400*365))-(this.days*86400)-(this.hours*3600)-(this.minutes*60)),1);

我想获取日期时间,但是如果使用了夏令时,则日期会减少1小时。我不知道如何检查是否已使用DST。

我怎么知道夏令时的开始和结束?

回答:

此代码使用的事实是,在标准时间与夏令时(DST)期间getTimezoneOffset返回 更大的

值。因此,它确定了“标准时间”期间的预期输出,并比较了给定日期的输出是否相同(“标准”)或更少(“ DST”)。

请注意,对于UTC 以西 的区域,getTimezoneOffset返回的分钟数为 数,通常表示为

数小时(因为它们位于UTC之后)。例如,洛杉矶是

DST。在12月(冬季,标准时间)返回(正480分钟),而不是。它返回东半球的 负数 (例如冬天的悉尼,尽管“提前”( )。

*

Date.prototype.stdTimezoneOffset = function () {

var jan = new Date(this.getFullYear(), 0, 1);

var jul = new Date(this.getFullYear(), 6, 1);

return Math.max(jan.getTimezoneOffset(), jul.getTimezoneOffset());

}

Date.prototype.isDstObserved = function () {

return this.getTimezoneOffset() < this.stdTimezoneOffset();

}

var today = new Date();

if (today.isDstObserved()) {

alert ("Daylight saving time!");

}

以上是 如何检查DST(夏令时)是否有效以及偏移量是多少? 的全部内容, 来源链接: utcz.com/qa/427722.html

回到顶部