如何在JavaScript中計算兩個日期之間的天數?


在本題中,我們將編寫一個函式,利用Javascript的功能來計算給定日期之間的天數。為了解決這個問題,我們將使用Javascript的一些內建方法和數學運算。

理解題目

在本題中,我們必須建立一個函式,透過傳入兩個日期來計算天數作為輸出結果。這項任務可以使用Date物件和基本的數學運算來完成。例如,如果我們有兩個日期,例如2023-02-15和2023-02-25,那麼這兩個日期之間相差10天。所以我們的目的是構建一個程式來獲得這個輸出。

上述問題的邏輯

在程式碼中,我們將為每個輸入日期建立一個新的Date物件,計算這些日期之間的絕對差值,並將差值除以一天中的毫秒數。然後,藉助Math.round方法將結果四捨五入到最接近的整數。

演算法

步驟1 - 建立一個名為numberOfDays的函式,該函式將接收兩個日期作為引數。

步驟2 - 定義一個常量oneDay,它將表示一天中的毫秒數。

步驟3 - 基於輸入日期,使用Date物件建立兩個新日期。

步驟4 - 計算兩個給定日期之間的差值。

步驟5 - 完成上述所有步驟後,將差值除以一天,以獲得以天為單位的差值。

步驟6 - 使用Math.round方法將結果四捨五入到最接近的整數。

演算法程式碼

function numberOfDays(date1, date2) {
   // Number of milliseconds in a day
   const oneDay = 24 * 60 * 60 * 1000;
   const firstDate = new Date(date1);
   const secondDate = new Date(date2);
   const diffDays = Math.round(Math.abs((firstDate - secondDate) / oneDay));
   return diffDays;
}
const date1 = '2021-04-15';
const date2 = '2021-06-10';
const numDays = numberOfDays(date1, date2);

console.log(`There are ${numDays} days between ${date1} and ${date2}`);

複雜度

上述程式碼所花費的時間是O(1)的常數,因為除了輸入日期的大小之外,我們只執行了固定的操作。演算法所消耗的記憶體也是O(1),因為我們只在程式碼中儲存了天數。

結論

使用這段程式碼,我們可以有效地計算Javascript中給定日期之間的天數。我們使用了名為Date的預定義物件和數學函式。在函式內部,我們以引數的形式給出了兩個日期。程式碼的時間和空間複雜度為O(1),即常數。

更新於:2023年5月18日

893 次瀏覽

啟動您的職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.