如何使用 JavaScript 检查日期是否少于 1 小时前?

javascriptweb developmentfront end technology

在本教程中,我们将学习如何找出两个日期之间的差异并检查差异是否少于一小时。有时,开发人员必须使用 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; // 毫秒 * 秒 * 分钟
if (Math.abs(difference) < hoursMilli) {

    // 花费的时间少于 1 小时
} else {

    // 超过 1 小时前
}

在上述语法中,hoursMilli 包含小时的总毫秒数,我们使用 Math.abs() 方法获取两个日期之间的毫秒绝对差。

步骤

步骤 1 - 创建两个日期。

步骤 2 - 使用 getTime() 方法获取两个日期的总毫秒数,找出它们之间的差值,并将其值存储在 difference 变量中。

步骤 3 - 将 1 小时的总毫秒数存储在 hoursMilli 变量中。

步骤 4 - 如果差异变量的绝对值小于 hourMilli,则表示尚未花费 1 小时。

示例

在下面的示例中,我们创建了两个具有不同时间戳的不同日期。我们将 date 和 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);
      
      // 创建一个不小于 1 小时前的日期
      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;
         
         // 比较小时的总毫秒数和两个日期之间的差值。
         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) {

    // 两个日期之间的差异不超过一小时
} else {

    // 两个日期之间的差异超过一小时。
}

步骤

步骤 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 库现已弃用。


相关文章