目录
Check if a Date is within 24 hours in JavaScript
在 JavaScript 中检查日期是否在 24 小时内
检查日期是否在 24 小时内:
- 从日期的时间戳中减去当前日期的时间戳。
- 将结果传递给
Math.abs()
函数。 - 将结果转换为小时。
- 检查日期之间的小时数是否小于
24
。
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
函数返回数字,如果为负数,则返回数字的负数。
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 小时前:
- 将 24 小时转换为毫秒。
- 获取表示 24 小时前时间的时间戳。
- 检查日期的时间戳是否大于 24 小时前的时间戳。
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 小时前的时刻。
我们能够将日期与时间戳进行比较,因为在引擎盖下每个日期都存储一个时间戳 – 从 1970 年 1 月 1 日到给定日期之间经过的毫秒数。
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.
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
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.