如何在 JavaScript 中只比較日期部分而不比較時間?


在開發應用程式時,有時需要僅比較日期。例如,您正在開發一些應用程式,其中使用者必須遵守截止日期並支付訂閱費用。如果使用者在訂閱結束日期或之前任何時間付款,則使用者將能夠繼續使用訂閱。否則,您需要停止訂閱。

在本教程中,我們將學習如何在 JavaScript 中僅比較日期部分而不比較時間。

在上述情況下,我們需要比較兩個日期,而不關注時間。

方法 1:使用 setHours() 方法

僅比較日期部分的簡單邏輯是從兩個日期物件中刪除時間或將時間設定為 0。在這裡,我們將建立新的日期並將它們的時間設定為 0,以便當我們在日期之間進行比較時,它將僅比較日期部分,因為兩個日期的時間都將相同。

語法

使用者可以按照以下語法建立新的日期物件並將其時間設定為 0。

let date1 = new Date();
date1.setHours(0, 0, 0, 0);
let date2 = new Date( Date );
date2.setHours(0, 0, 0, 0);

我們可以使用以下語法比較兩個日期。

// comparing the dates
if( date1 > date2 ) {
   // do something
} else if ( date1 < dae2 ) {
   // write some code
} else {
   // date is same
}

引數

  • 日期 - 日期物件將日期作為引數,對於該日期,我們希望初始化 Date() 類的新的物件。

  • setHours() 方法接受 4 個引數,分別是小時、分鐘、秒和毫秒。我們將在兩個日期上都將其全部設定為 0。

示例

在下面的示例中,我們使用 Date() 類建立了兩個新的日期。之後,我們將兩個日期的小時都設定為 0。我們建立了用於比較日期的函式,該函式根據日期比較列印不同的輸出。我們在下面的示例中使用了不同的日期進行比較並觀察結果。

<html> <head> </head> <body> <h2>Comparing only date part of two dates JavaScript.</h2> <h4>compare two date by <i>setting up time 0</i> to the both dates.</h4> <p id = "output"></p> <script> let output = document.getElementById("output"); function compareDates( date1, date2 ) { if ( date1 < date2 ) { 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(); // setup time 0 date1.setHours(0, 0, 0, 0); let date2 = new Date(2002, 06, 21); date2.setHours(0, 0, 0, 0); compareDates(date1, date2); output.innerHTML += "<br/>"; date2 = new Date(); date2.setHours(0, 0, 0, 0); compareDates(date1, date2); </script> </body> </html>

我們已將小時設定為 0 以僅在 JavaScript 中比較日期部分。但是,使用者可以從日期物件中提取年份、月份和日期,並分別進行比較。

方法 2:使用 toDateString() 方法

toDateString() 方法可用於返回 JavaScript 日期中唯一的日期部分。它將日期部分作為字串返回。我們無法將字串作為日期進行比較,因此我們需要將此字串轉換回日期。現在它將日期與時間部分設定為零。

語法

我們可以應用語法將日期轉換為日期字串,然後轉換回日期。

let date1 = new Date().toDateString();
date1 = new Date(date1)

示例

在下面的示例中,我們建立兩個日期,然後使用 toDateString() 將其轉換為字串。然後再次將這些字串轉換回日期。現在我們比較這些日期。

<html> <head> </head> <body> <h4>Compare two date part only using the toDateString() method.</h4> <p id="output"></p> <script> let output = document.getElementById("output"); function compareDates(date1, date2) { if (date1 < date2) { 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/>"; } } output.innerHTML += "<br/>"; let date1 = new Date().toDateString(); date1 = new Date(date1) let date2 = new Date(2002, 06, 21).toDateString(); date2 = new Date(date2) compareDates(date1, date2); output.innerHTML += "<br/>"; date2 = new Date().toDateString(); date2 = new Date(date2) compareDates(date1, date2); </script> </body> </html>

更新於: 2022-08-23

6K+ 瀏覽量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告