javascript計算兩個日期之間的時間差程式碼例項

admin發表於2017-04-05

本章節分享一段程式碼例項,它實現了獲取兩個日期之間時間差的功能。

時間差的單位比較靈活,可以是秒、小時、天、或者月等等。

程式碼例項如下:

[JavaScript] 純文字檢視 複製程式碼
Date.prototype.Diff=function(interval,objDate){ 
  if (arguments.length<2||objDate.constructor!=Date){ 
    return undefined; 
  } 
  switch (interval) { 
   case 's': return parseInt((objDate - this) / 1000); 
   case 'n': return parseInt((objDate - this) / 60000); 
   case 'h': return parseInt((objDate - this) / 3600000); 
   case 'd': return parseInt((objDate - this) / 86400000); 
   case 'w': return parseInt((objDate - this) / (86400000 * 7)); 
   case 'm': return (objDate.getMonth() + 1) + ((objDate.getFullYear() - this.getFullYear()) * 12) - (this.getMonth() + 1); 
   case 'y': return objDate.getFullYear() - this.getFullYear(); 
   default: return undefined; 
  } 
}; 
var nDate=new Date();
var objDate=new Date("2015/10/3");
console.log(nDate.Diff("d",objDate));

上面的程式碼實現了我們的要求,下面介紹一下它的實現過程。

一.程式碼註釋:

(1).function(interval, objDate){},此方法可以實現計算功能,第一個引數規定時間差的單位,第二個引數是一個時間物件。

(2).if (arguments.length<2||objDate.constructor!=Date){

  return undefined;

} ,如果方法傳遞的引數少於兩個或者第二個引數並非是Date物件,那麼就返回undefined。

(3).switch (interval) {},switch流程控制語句。

(4).case 's': return parseInt((objDate - this) / 1000),如果要獲取兩個時間相差多少秒,那麼就使用時間物件相減,然後再除以1000.兩個時間物件進行減運算,會隱式的呼叫valueOf()方法,也就是會獲取時間物件的時間戳,然後再除以1000就是相差的秒數。(5).case 'n': return parseInt((objDate - this) / 60000),如果要獲取兩個時間相差多少分鐘,那麼就要除以60000,一分鐘有60秒,一秒是1000毫秒,所以60000=60*1000.

二.相關閱讀:

(1).arguments可以參閱arguments可以參閱javascript arguments一章節。 

(2).parseInt()可以參閱javascript parseInt()一章節。

(3).Date物件相關操作可以參閱JavaScript Date物件一章節。

相關文章