如何使用 JavaScript 比較兩個日期?


在本教程中,我們將學習如何使用 JavaScript 比較兩個日期。日期也是 JavaScript 中的一種資料型別,大多數開發人員在開發應用程式時都會使用它。

讓我們透過一個現實生活中的例子來了解比較日期的需求。你們中的大多數人都在使用網際網路資料,公司會發送類似“您的資料包有效期還剩 2 天”的訊息。此外,使用者還可以看到網路提供商應用程式中的相同通知。所有這些都是由於日期比較。

這裡,我們有兩種不同的方法來比較兩個日期。

比較兩個日期的總毫秒數

當我們使用 **Date()** 類物件建立新日期時。我們使用 **getTime()** 方法以毫秒為單位獲取時間。**getTime()** 方法返回自 1970 年 1 月 1 日(Unix 紀元開始)以來的總毫秒數。我們可以比較總毫秒數並確定日期是否相同。

語法

使用者可以按照以下語法比較兩個日期的總毫秒數。

let date1 = new Date();
let date2 = new Date(2012, 11, 21);
// comparing the dates
if ( date1.getTime() < date2.getTime() ) {
   // date 1 is behind the date2
} else if ( date1 > date2 ) {
   // date1 is further to date2
} else {
   // date1 and date2 is same
}

示例

在下面的示例中,我們實現了上述方法。我們建立了 Date() 類的兩個新物件,並使用 if-else 語句比較了總毫秒數。使用者可以在輸出中看到各種日期之間比較的結果。

<html> <head> </head> <body> <h2> Comparing two dates with JavaScript. </h2> <h4> compare two date by <i> using total milliseconds </i> of both dates. </h4> <p id = "output"> </p> <script> let output = document.getElementById("output"); function compareDates( date1, date2 ) { if ( date1.getTime() < date2.getTime() ) { output.innerHTML += date1 + " is behind the " + date2 + " <br/> "; } else if ( date1 > date2 ) { output.innerHTML += date2 + " is behind the " + date1 + " <br/> "; } else { output.innerHTML += date1 + " is same as " + date2 + " <br/> "; } } // calling the function for different expressions output.innerHTML += "<br/>"; let date1 = new Date(); let date2 = new Date(2012, 11, 21); compareDates( date1, date2 ); output.innerHTML += "<br/>"; date2 = new Date(); compareDates( date1, date2 ); </script> </body> </html>

使用 Moment.js diff() 方法比較兩個日期

JavaScript 包含各種庫;其中之一是 **Moment.js**,用於管理日期和時間。Moment.js 有一個 **diff()** 方法,它給出兩個日期之間以年、月、日、小時、分鐘、秒、毫秒等為單位的差值。在我們的例子中,我們可以使用秒單位來查詢兩個日期之間的差異。

在使用 Moment.js 方法之前,請確保包含 Moment.js 或將 CDN 新增到 HTML 程式碼的標籤中。

語法

您可以按照以下語法使用 Moment.js 的 diff() 方法。

let date1 = moment();
let date2 = moment("2024-11-21");
let difference = date1.diff( date2, "seconds" ); // returns difference in seconds

引數

  • **date1** 和 **date2** 是我們需要進行比較的兩個日期。
  • **seconds** - 這是我們需要差異的時間單位。使用者也可以使用分鐘、小時等。

示例

在下面的示例中,我們使用 moment() 建立了兩個日期物件。我們對兩個物件應用了 diff() 方法來比較它們,並根據差異是相同、正數還是負數在輸出中呈現訊息。

<html> <head> <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.3/moment-with-locales.min.js" integrity="sha512-vFABRuf5oGUaztndx4KoAEUVQnOvAIFs59y4tO0DILGWhQiFnFHiR+ZJfxLDyJlXgeut9Z07Svuvm+1Jv89w5g==" crossorigin="anonymous" referrerpolicy="no-referrer"> </script> </head> <body> <h2> Comparing two dates with JavaScript. </h2> <h4> compare two dates using<i> diff() </i> method of Moment.js. </h4> <p id = "output"> </p> <script> let output = document.getElementById("output"); function compareDates(date1, date2) { if ( date1.diff(date2, "seconds") < 0 ) { output.innerHTML += date1.format('yy-MM-DD, HH:mm:ss') + " is behind the " + date2.format('yy-MM-DD, HH:mm:ss') + " <br/> "; } else if ( date1.diff(date2, "seconds") > 0 ) { output.innerHTML += date2.format('yy-MM-DD, HH:mm:ss') + " is behind the " + date1.format('yy-MM-DD, HH:mm:ss') + " <br/> "; } else { output.innerHTML += date1.format('yy-MM-DD, HH:mm:ss') + " is same as " + date2.format('yy-MM-DD, HH:mm:ss') + " <br/> "; } } // calling the function for different expressions output.innerHTML += "<br/>"; let date1 = moment(); let date2 = moment("2024-11-21"); compareDates(date1, date2); output.innerHTML += "<br/>"; date2 = moment(); compareDates(date1, date2); </script> </body> </html>

我們在本教程的第一部分使用了預設的 Date() 類來比較日期。此外,我們還使用了 Moment.js 庫方法進行比較。Moment 使開發人員能夠輕鬆處理日期。

更新於: 2022 年 8 月 17 日

19K+ 次檢視

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.