如何使用 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 库现在已弃用。