2017-03-08 67 views
2

有没有方法可以检查时代是否模糊或不在时刻?瞬间时区 - 检测给定时间是否含糊

America/Chicago区,2011-11-06 00:00一点也不含糊,但2011-11-06 01:00可以是中部夏令时间(CDT )或节约时间(CST )。

+1

_ambiguous_是什么意思?对于特定时刻的对象,如果处于夏令时,可以使用['isDST()'](http://momentjs.com/docs/#/query/is-daylight-saving-time/)进行编辑。无论如何,我担心你的问题有点不清楚,你必须编辑以进一步解释你需要做的事情。 – VincenzoC

+0

谢谢@VincenzoC做了编辑,'isDST()'会告诉我日期是否在DST范围内,而不是时间。 –

+0

你会如何定义歧义?以及你究竟想通过发现来达到什么目的,你能否以更详细的方式解释你的使用案例 – MGA

回答

0

我认为像这样将工作:

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分钟的变化,已经发生的历史上。更好的实现将测试瞬时时区数据中已知的转换点,或者根据本地派生的时刻对其进行扫描。这就是说,以上对于大多数现代用法来说已经足够了。

相关问题