如何在JavaScript中檢查一個日期是否在兩個日期之間?


在JavaScript中,我們可以使用Date()物件建立不同的時間戳。此外,我們可能需要檢查一個日期是否在JavaScript中的另外兩個日期之間。

例如,我們希望根據日期為電子商務應用程式中的訂單建立過濾器。因此,我們應該能夠過濾使用者在日期輸入欄位中輸入的兩個日期之間的所有訂單。

檢查一個日期是否在另外兩個日期之間的另一個實際用例是在銀行應用程式中。例如,在開發銀行系統應用程式時,開發人員需要建立一個過濾器,允許使用者對兩個日期之間的所有交易進行排序。

透過比較日期,檢查一個日期是否在另外兩個日期之間

在JavaScript中,我們可以比較日期物件的兩個例項。當我們比較日期物件的兩個例項時,它會比較從1970年1月1日開始到這兩個日期為止的總毫秒數。

因此,我們可以像在JavaScript中比較數值一樣正常地比較兩個日期,並確保一個日期在另外兩個日期之間。

語法

使用者可以按照以下語法來確保JavaScript中的一個日期在另外兩個日期之間。

if (date1 < date2 && date2 < date3) {
   
   // date2 is between the date1 and date3
} else {
   
   // date2 is not between the date1 and date3
 }

在上面的語法中,使用者可以看到,如果date2大於date1date2小於date3,則表示date2date1date3之間。

示例

在下面的示例中,我們使用Date物件的建構函式建立了三個不同的時間戳。之後,我們使用了上面語法中解釋的邏輯來檢查date2是否在date1date3之間。

在輸出中,使用者可以看到date2date1date3之間。

<html>
<body>
   <h2><i>Comparing the dates</i> to check if one date is between two.</h2>
   <p id="output"> </p>
   <script>
      let output = document.getElementById("output");
      let date1 = new Date(2020, 03, 11);
      let date2 = new Date(2022, 03, 12);
      let date3 = new Date();
      if (date1 < date2 && date2 < date3) {
         output.innerHTML += date2 + " is between <br> " + date1 + " <br> and <br> " + date3;
      } else {
         output.innerHTML += date2 + " is not between the " + date1 + " <br> and <br>" + date3;
      }
   </script>
</body>
</html>

從隨機日期字串建立一個新日期,並進行比較

現在,讓我們考慮一下我們沒有給出標準日期物件的時間戳,但日期以字串格式的情況。因此,我們必須從日期字串中提取年份、月份和日期。之後,我們需要根據從字串中獲得的值建立一個標準時間戳,並像我們在上一節中所做的那樣進行比較。

語法

使用者可以按照以下語法來檢查隨機格式的字串給定時,一個日期是否在另外兩個日期之間。

// splitting the dates
let [year1, month1, date1] = prev_date.split(",");
let [year2, month2, date2] = current_date.split(",");
let [year3, month3, date3] = final_date.split(",");

// creating new formatted dates
prev_date = new Date(year1, month1 - 1, date1);
current_date = new Date(year2, month2 - 1, date2);
final_date = new Date(year3, month3 - 1, date3);
if (prev_date < current_date && current_date < final_date) {

   // current_date is between the prev_date and final_date
} else{
   
   // current_date is not between the prev_date and final_date
} 

在上面的語法中,我們使用了“,”分隔符來分割字串,但是使用者可以根據給定的日期字串來選擇分隔符。之後,我們解構了從split方法得到的陣列,並使用該值來建立新的標準日期時間戳。

示例

在這個例子中,我們取了三個日期字串。接下來,我們分割它們,得到年份、月份和日期值,並用它們來建立新的日期。

之後,我們比較新的時間戳,以確保current_date在prev_date和final_date之間。

<html>
<body>
   <h3>Create a new date from <i> date string and compare them </i> to check if one date is between two</h3>
   <p id = "output"> </p>
   <script>
      let output = document.getElementById("output");
      let prev_date = "2022,10,23";
      let current_date = "2021,11,22";
      let final_date = "2023,12,30";
      let [year1, month1, date1] = prev_date.split(",");
      let [year2, month2, date2] = current_date.split(",");
      let [year3, month3, date3] = final_date.split(",");
      prev_date = new Date(year1, month1 - 1, date1);
      current_date = new Date(year2, month2 - 1, date2);
      final_date = new Date(year3, month3 - 1, date3);
      if (prev_date < current_date && current_date < final_date) {
         output.innerHTML += current_date + " is between <br>" + prev_date + "<br> and <br> " + final_date;
      } else {
         output.innerHTML += current_date + " is not between <br>" + prev_date + " <br> and <br> " + final_date;
      }
   </script>
</body>
</html> 

使用者學習了兩種方法來檢查日期是否在另外兩個日期之間。當給出Date物件的標準時間戳時,使用者可以使用第一種方法;否則,使用者可以從日期字串中提取不同的值,並使用它們來建立日期物件的新例項並進行比較。

更新於:2023年3月10日

1K+ 次瀏覽

啟動您的職業生涯

透過完成課程獲得認證

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