2017-03-08 48 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分鐘的變化,已經發生的歷史上。更好的實現將測試瞬時時區數據中已知的轉換點,或者根據本地派生的時刻對其進行掃描。這就是說,以上對於大多數現代用法來說已經足夠了。

相關問題