在當前情況下,可以安全地假定所有比較日期都是同一天,因此只存儲時間。Moment.js中的安全時間比較
然而,顯然存在類似Y2K問題的非零概率。
這段代碼可能會失敗時被在00:00(粗略地)如果momentTimeA
線在23執行評價:59:00:00.000另一天的:一天和momentTimeB
線的59.999 00被評估
// timeA is '06:00:00', momentTimeA is '2016-11-11T06:00:00.000';
const momentTimeA = moment(timeA, 'H:mm:ss');
// ...
// timeB is '03:00:00', momentTimeB is '2016-11-12T03:00:00.000';
const momentTimeB = moment(timeB, 'H:mm:ss');
// should be positive
momentTimeA.diff(momentTimeB);
目前,這個執行時間比較的代碼是同步運行的,但它可能會在以後變得異步,這會大大增加風險。
如何解決這個問題?
當您得到0:00:00的時間時,嘗試將其更改爲0:00:01(或任何不會破壞它的時間非常接近0:00:00,如12:59:59),如果確切的時間不是真的有必要。 – Feathercrown
@Feathercrown如果可能的話,我寧願避免這種情況,因爲時間有時必須量化,並且一些比較是針對硬編碼'00:00'和'24:00'完成的,這會使邏輯更加複雜。 – estus
嗯,嗯......我想你可以檢查一個是否爲零,只是將另一個的值作爲差值。 – Feathercrown