时刻时区 - 检测给定时间是否模糊

时间:2017-03-08 21:50:04

标签: momentjs

有没有办法在momentjs中检查一个纪元是否含糊不清?

America/Chicago区域中,2011-11-06 00:00不明确,但2011-11-06 01:00可以是中央夏令时( CDT )或储蓄时间( CST < / em>的)。

1 个答案:

答案 0 :(得分:3)

我觉得这样的事情会奏效:

function hasAmbiguousWallTime(m) {
    var t = [60, -60, 30, -30];
    var a = t.map(function(x) { return moment(m).add(x, 'm').format('HH:mm'); });
    return a.indexOf(m.format('HH:mm')) > -1;
}

示例:

hasAmbiguousWallTime(moment.tz("2011-11-06 01:00", "America/Chicago")) // true
hasAmbiguousWallTime(moment.tz("2011-11-06 00:00", "America/Chicago")) // false

请注意,对于偏移量不是30或60分钟更改的转换,这可能会失败,这在历史上已经发生过。更好的实现将测试时刻 - 时区数据中的已知转换点,或者针对本地派生的时刻扫描它们。也就是说,上述内容足以满足大多数现代用途。