- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有没有办法获取 DST 转换的时间量。例如,有一些奇怪的时区有 30 分钟的过渡。我获得此信息的另一种方法是获取标准时间和夏令时的 utc 偏移量,我可以将两者相减。
如果我执行 moment.tz('America/Chicago')._z.offsets,我可以访问所有偏移量的大型数组。但是我需要知道数组中的哪个索引是当前年份。
有什么想法吗?
最佳答案
这将返回当年 1 月 1 日和 6 月 1 日之间 UTC 偏移量的当前差异 - 这可能是您要查找的内容:
function getDSTBias(tz) {
var janOffset = moment.tz({month: 0, day: 1}, tz).utcOffset();
var junOffset = moment.tz({month: 5, day: 1}, tz).utcOffset();
return Math.abs(junOffset - janOffset);
}
这些是相对安全的测试日期,因为它们处于冬季中期和夏季中期 - 尽管这取决于北半球或南半球。不会发生 DST 转换 anywhere in the world在这两个日期。
您可能会看到其他代码推荐 7 月 1 日,但是 DST weirdness in Morocco可以使 7 月 1 日成为标准时间日期。
如果您不喜欢硬编码日期的想法,这里有另一种方法:
function getOffsetDelta(tz) {
var z = moment.tz.zone(tz);
var i = z._index(moment());
return i < z.offsets.length-1 ? Math.abs(z.offsets[i] - z.offsets[i+1]) : 0;
}
这种方法给出了现在 和下一个预定转换之间的偏移差异。请注意,除了 DST 之外,还有其他转换原因 - 例如标准偏移量更改。
另请注意,这种替代方法不会将时间限制为当年。因此,如果计划在未来一年取消夏令时,它将反射(reflect)在结果中。您可以更改它以针对 last 转换进行测试,但这也会产生奇怪的结果,例如说 America/Phoenix
有 60 分钟的增量,因为 Arizona experimented briefly with DST in 1967 .
因此,在大多数情况下,第一种方法可能是最好的。
关于javascript - 如何从 MomentJS 获取夏令时金额,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35978494/
我是一名优秀的程序员,十分优秀!