如何从MomentJS获取DST金额
How do I get the DST amount from MomentJS
有没有办法获取DST转换的时间量。 例如,有一些奇怪的时区有 30 分钟的过渡。 我得到这个的另一种方法是获取标准时间和 dst 时间的 UTC 偏移量,我可以减去两者。
如果我做 moment.tz('美国/芝加哥')._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 转换。
您可能会看到其他建议 7 月 1 日的代码,但摩洛哥的 DST 怪异可能会使 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 之外,还有其他转换原因 - 例如标准偏移更改。
另请注意,这种替代方法不会将时间限制为当年。 因此,如果计划在未来一年取消 DST,它将反映在结果中。 您可以更改此设置以针对上次转换进行测试,但这也会给出奇怪的结果,例如说America/Phoenix
有 60 分钟的增量,因为亚利桑那州在 1967 年短暂地尝试了 DST。
因此,在大多数情况下,第一种方法可能是最好的。
相关文章:
- 货币代码为欧元-金额的格式不应包含小数
- 在输入字段中将最小金额设置为
- 改进用于验证付款金额的正则表达式
- 针对重复发生的事件,使用moment.js防止DST偏移
- 获取唯一值并使用javascript计算金额总和
- 金额结果为NaN
- PayPal按钮是否有一个简单的选项,其中金额基于一些用户输入
- RegExp-如何匹配尽可能短的金额
- 如何按加权金额分配资金
- PayPal按钮,允许客户为金额范围选择具有不同价格的产品数量
- 如何将我通过JavaScript计算的自定义金额作为金额发送到PHP表单
- 当用户在yii2中键入金额时,如何计算10%的折扣值
- JQuery计算金额(带逗号)
- 如何获得大写金额
- 通过文本字段中的输入值使用Java Script计算金额
- Coinbase接受BTC-预先填充iframe的金额
- 希望将数字形式的金额转换为单词
- 将金额分配给不同的字段javascript
- 获取系统的时区名称(IST,PST,DST)'IE中java脚本中的s日期
- 如何从MomentJS获取DST金额