此代码使用的事实是,在标准时间与夏令时(DST)期间
getTimezoneOffset返回 更大的
值。因此,它确定了“标准时间”期间的预期输出,并比较了给定日期的输出是否相同(“标准”)或更少(“ DST”)。
请注意,对于UTC 以西 的区域,
getTimezoneOffset返回的分钟数为 正 数,通常表示为 负
数小时(因为它们位于UTC之后)。例如,洛杉矶是 UTC-8h* 标准, UTC-7h
DST。在12月(冬季,标准时间)返回(正480分钟),而不是。它返回东半球的 负数 (例如冬天的悉尼,尽管“提前”( UTC + 10h )。
getTimezoneOffset``480``-480__
-600*
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!");}


