如何使用 JavaScript 檢查日期是否小於 1 小時前?


在本教程中,我們將學習如何查詢兩個日期之間的差異,並檢查該差異是否小於一小時。有時,開發人員必須使用 Date 物件並每小時執行某些操作。因此,這可以是一種方法,用於檢查是否在一小時前執行了特定操作,如果執行了,則再次執行;否則,等待完成一小時。

在這裡,我們將學習使用 JavaScript 檢查日期是否小於 1 小時前的不同方法。

使用 getTime() 方法

getTime() 方法返回自 1970 年 1 月 1 日以來的日期總毫秒數。因此,我們可以使用 getTime() 方法查詢當前日期和先前日期的總毫秒數。之後,我們可以找到兩個日期的總毫秒數之差,並將其與小時的總毫秒數(即 1000*60*60)進行比較。

語法

使用者可以按照以下語法使用 JavaScript 檢查日期是否小於 1 小時前。

let current_date = new Date();
let difference = current_date.getTime() - date.getTime();
let hoursMilli = 1000 * 60 * 60; // milliseconds * seconds * minutes
if (Math.abs(difference) < hoursMilli) {
   
   // less than 1 hour spent
} else {
   
   // more than 1 hour ago
}

在上述語法中,hoursMilli 包含小時的總毫秒數,我們使用 Math.abs() 方法獲取兩個日期之間毫秒數的絕對差。

步驟

步驟 1 - 建立兩個日期。

步驟 2 - 使用 getTime() 方法獲取兩個日期的總毫秒數,找到它們之間的差,並將它的值儲存在 difference 變數中。

步驟 3 - 將 1 小時的總毫秒數儲存在 hoursMilli 變數中。

步驟 4 - 如果 difference 變數的絕對值小於 hourMilli,則意味著 1 小時尚未過去。

示例

在下面的示例中,我們建立了兩個具有不同時間戳的不同日期。我們根據上述步驟中說明的方法,將日期和 current_date 的總毫秒數之差與 1 小時的總毫秒數進行比較,以檢查日期是否小於一小時前。

<html>
<body>
   <h3>Using the <i> custom algorithm </i> to check if the date was less than 1 hour ago.</h2>
   <div id="output"> </div>
   <script>
      let output = document.getElementById("output");
      let date1 = new Date(2023, 02, 11);
      
      // Creating a date that is not less than 1 hour ago
      let date2 = new Date(new Date().getTime() - 20302);   
      function isHourSpent(date) {
         let current_date = new Date();
         let difference = current_date.getTime() - date.getTime();
         console.log(difference);
         let hoursMilli = 1000 * 60 * 60;
         
         // comparing the hour's total milliseconds and the difference between the two dates.
         if (Math.abs(difference) < hoursMilli) {
            output.innerHTML += "The " + date + " is less than an hour ago! <br/>";
         } else {
            output.innerHTML += "The " + date + " is not less than hour ago! <br/>";
         }
      }
      isHourSpent(date1);
      isHourSpent(date2);
   </script>
</body>
</html> 

使用 Date 物件的 setMinutes() 方法

Date 物件中的 setMinutes() 方法允許開發人員設定時間戳中的分鐘數。它接受三個引數,分別表示要為日期設定的分鐘、秒和毫秒,秒和毫秒是可選的。

如果我們將分鐘設定為零並比較兩個日期,我們可以知道特定日期是否在一小時前。

語法

使用者可以按照以下語法使用 setMinute() 方法來檢查兩個日期之間的差值是否小於一小時。

date.setMinutes(0, 0, 0);
current_date.setMinutes(0, 0, 0);
if (date - current_date == 0) {
   
   // difference between the two dates is not more than an hour
} else {
   
   // difference between two dates more than an hour.
} 

步驟

步驟 1 - 使用 setMinutes() 方法,並將 0, 0, 0 作為引數傳遞,以將 previous_date 的分鐘、秒和毫秒設定為零。

步驟 2 - 也將 current_date 的分鐘設定為零。

步驟 3 - 獲取兩個日期之間的差;如果它是零,則該日期小於一小時前。

示例

在這個例子中,我們使用了 setMinutes() 方法將日期的總分鐘數設定為零。之後,我們取日期的差值,它返回日期之間毫秒數的差值。

如果差值為零,則兩個日期的年、月、日和小時相同。所以,我們可以說那一天不到 1 小時前。

<html>
<body>
   <h3>Using the <i> setMinutes() method </i> to check if the date was less than 1 hour ago.</h2>
   <div id="output"> </div>
   <script>
      let output = document.getElementById("output");
      let date1 = new Date(2022, 12, 01);
      let date2 = new Date(new Date().getTime() - 20302);
      
      function isHourSpent(date) {
         let current_date = new Date();
         date.setMinutes(0, 0, 0);
         current_date.setMinutes(0, 0, 0);
         if (date - current_date == 0) {
            output.innerHTML += "The " + date + " is less than hour ago! <br/>";
         } else {
            output.innerHTML += "The " + date + " is not less than an hour ago! <br/>";
         }
      }
      isHourSpent(date1);
      isHourSpent(date2);
   </script>
</body>
</html>

在本教程中,我們學習瞭如何查詢兩個日期之間的差異,並檢查日期是否小於 1 小時前。此外,使用者可以使用 Moment Js 庫的 diff()isAfter() 方法來檢查相同的內容,但使用者應該記住,Moment JS 庫現在已棄用。

更新於:2023年3月10日

4K+ 次檢視

啟動您的職業生涯

完成課程獲得認證

開始
廣告