天天看點

js JavaScript 計算時間差(兩個日期時間相差的時間,包括毫秒,分鐘,天數,差幾個月,差幾個季度)

工作中遇到任何關于時間的代碼,都可以利用momentjs來寫

中文網: http://momentjs.cn/

要擷取兩個時刻之間的內插補點的時長,則可以将 

diff

 作為參數傳給 

moment#duration

支援的度量有 

years

months

weeks

days

hours

minutes

 和 

seconds

。 為了便于開發,從 2.0.0 版本開始支援單數形式。 1.1.1 版本中提供了毫秒以外的度量機關。

預設情況下,

moment#diff

 會将結果截斷為零個小數位,并傳回一個整數。 如果需要浮點數,則将 

true

 作為第三個參數傳入。 在 2.0.0 之前,

moment#diff

 傳回的數字會四舍五入到最接近的整數,而不是截斷的數字。

支援多種日期格式

moment().diff(Moment|String|Number|Date|Array);

moment().diff(Moment|String|Number|Date|Array, String);

moment().diff(Moment|String|Number|Date|Array, String, Boolean);

var a = moment([2008, 9]);
var b = moment([2007, 0]);
a.diff(b, 'years');       // 1
a.diff(b, 'years', true); // 1.75



           

差幾個月

a.diff(b, 'months');    
           

差幾個星期

a.diff(b, 'weeks');    
           

差幾天

a.diff(b, 'days');    
           

差幾個小時

a.diff(b, 'hours');    
           

也可以通過差的分鐘數/60算出差的小時數

let diff_minutes = a.diff(b, 'minutes');    

diff_minutes/60
           

如果該時刻早于傳給 moment.fn.diff 的時刻,則傳回值為負數。

var a = moment();
var b = moment().add(1, 'seconds');
a.diff(b) // -1000
b.diff(a) // 1000
           

這種負數的情況可以使用 Math.abs(x) 計算絕對值

月份和年份的差異

moment#diff

 對月份和年份的差異進行一些特殊處理。 它做了一些優化,以確定具有相同日期的兩個月始終是整數。

是以,1月15日至2月15日應該恰好是1個月。

2月28日至3月28日應該恰好是1個月。

2011年2月28日至2012年2月28日應該恰好是1年。

對月份和年份的差異的更改于 2.0.0。 從 2.9.0 版本開始,diff 還支援季度機關。