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


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

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

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

方法一:使用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中比較日期部分。但是,使用者可以從日期物件中提取年份、月份和日期,並分別進行比較。

方法二:使用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年8月23日

6000+ 次瀏覽

啟動您的職業生涯

完成課程獲得認證

開始學習
廣告