在 JavaScript 中检查日期是否在 24 小时内

目录

Check if a Date is within 24 hours in JavaScript

  1. 在 JavaScript 中检查日期是否在 24 小时内
  2. 使用 JavaScript 检查日期是否小于 24 小时前

在 JavaScript 中检查日期是否在 24 小时内

检查日期是否在 24 小时内:

  1. 从日期的时间戳中减去当前日期的时间戳。
  2. 将结果传递给Math.abs()函数。
  3. 将结果转换为小时。
  4. 检查日期之间的小时数是否小于24
索引.js
const then = new Date('2022-01-24T09:30:20'); const now = new Date(); const msBetweenDates = Math.abs(then.getTime() - now.getTime()); // 👇️ convert ms to hours min sec ms const hoursBetweenDates = msBetweenDates / (60 * 60 * 1000); console.log(hoursBetweenDates); if (hoursBetweenDates < 24) { console.log('date is within 24 hours'); } else { console.log('date is NOT within 24 hours'); }

getTime方法返回从

1970 年 1 月 1 日到给定日期之间经过的毫秒数。

我们必须从第二个日期的时间戳中减去第一个日期的时间戳。

我们使用
Math.abs
方法将可能为负数的数转换为正数。

该函数采用的唯一参数是我们想要获得其绝对值的数字。

该函数返回数字的绝对值,换句话说,它返回数字与零的距离。

如果提供的数字为正数或零,则该Math.abs函数返回数字,如果为负数,则返回数字的负数。

索引.js
console.log(Math.abs(-6)); // 👉️ 6 console.log(Math.abs(-6.5)); // 👉️ 6.5 console.log(Math.abs(-0)); // 👉️ 0

msBetweenDates变量存储两个日期之间的毫秒数。

下一步是将毫秒转换为小时。

一旦我们得到了两天之间的小时数,我们所要做的就是检查小时数是否小于24以查看日期是否在小时内。 24

请注意,这可能意味着该日期24在未来几小时内或
24过去几小时内。

使用 JavaScript 检查日期是否小于 24 小时

检查日期是否小于 24 小时前:

  1. 将 24 小时转换为毫秒。
  2. 获取表示 24 小时前时间的时间戳。
  3. 检查日期的时间戳是否大于 24 小时前的时间戳。
索引.js
function isLessThan24HourAgo(date) { // 👇️ hour min sec milliseconds const twentyFourHrInMs = 24 * 60 * 60 * 1000; const twentyFourHoursAgo = Date.now() - twentyFourHrInMs; return date > twentyFourHoursAgo; } console.log(isLessThan24HourAgo(new Date())); // 👉️ true console.log(isLessThan24HourAgo(new Date('2022-01-25'))); // 👉️ false

我们创建了一个可重用的函数,它将一个Date对象作为参数并检查日期是否早于 24 小时前。

示例中的函数还将返回true未来的日期。如果您只想检查日期是否早于 24 小时并且不在未来,请向下滚动到下一个代码片段。

第一步是计算 24 小时有多少毫秒。

Date.now
()
方法返回自 1970 年 1 月 1 日午夜以来经过的毫秒数。

通过从时间戳中减去24以毫秒为单位的小时数,我们得到了 24 小时前的时刻。

如果传入的日期大于 24 小时前的时间戳,则该日期小于 24 小时或未来。

我们能够将日期与时间戳进行比较,因为在引擎盖下每个日期都存储一个时间戳 – 从 1970 年 1 月 1 日到给定日期之间经过的毫秒数。

索引.js
const date = new Date('2022-07-24'); // 👇️ 1658620800000 console.log(date.getTime());
每个日期都在后台存储一个时间戳,因此默认行为是比较日期的时间戳,即使您没有在每个日期显式调用该方法也是如此。 getTime()

If you need to check if a date is less than 24 hours ago and is not in the
future, add a condition that checks that the date is less than or equal to the
current timestamp.

index.js
function isLessThan24HourAgo(date) { // 👇️ hour min sec milliseconds const twentyFourHrInMs = 24 * 60 * 60 * 1000; const twentyFourHoursAgo = Date.now() - twentyFourHrInMs; return date > twentyFourHoursAgo && date <= Date.now(); } console.log(isLessThan24HourAgo(new Date())); // 👉️ true console.log(isLessThan24HourAgo(new Date('2045-09-24'))); // 👉️ false
Our first condition checks that the date’s timestamp is greater than the timestamp 24 hours ago and the second condition checks that the date’s timestamp is less than or equal to the current timestamp.

The second condition would not be met for any dates in the future.

The logical AND (&&) operator will only return true if both conditions are
met, otherwise false is returned.