关于momentjs:Moment Timezone – 检测给定时间是否模糊

Moment Timezone - Detect if given time is ambiguous

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

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


我觉得这样的事情会起作用:

1
2
3
4
5
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;
}

例子:

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

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