You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Node.js中检查文件是否存在且最近24小时内被修改(实现简易文件缓存机制)

判断文件是否在最近24小时内修改过

没问题,我来帮你完善这个文件缓存的判断逻辑!其实mtime本身就是JavaScript的Date对象,咱们直接拿它和当前时间对比,计算时间差是否在24小时以内就行。

完善后的代码

const fs = require('fs');
function have_recent_file(path) {
  try {
    const mtime = fs.statSync(path).mtime;
    // 把24小时转换成毫秒数:24小时 × 60分钟 × 60秒 × 1000毫秒
    const twentyFourHoursMs = 24 * 60 * 60 * 1000;
    // 获取当前时间的毫秒时间戳
    const now = Date.now();
    // 计算文件最后修改时间与当前时间的差值
    const timeDiff = now - mtime.getTime();
    
    // 差值小于等于24小时的毫秒数,就返回true(文件是最近修改的)
    return timeDiff <= twentyFourHoursMs;
  } catch (ex) {
    return false; // 文件不存在或无法访问时直接返回false
  }
}

关键逻辑说明

  • 时间单位统一:JavaScript里的时间戳都是以毫秒为单位的,所以先把24小时转换成对应毫秒数,这样能直接和时间差做对比。
  • mtime.getTime():这个方法会返回文件最后修改时间的毫秒时间戳,和Date.now()的格式完全一致,两者相减就能得到准确的时间差。
  • 边界情况处理:如果文件刚好是24小时整前修改的,timeDiff会等于twentyFourHoursMs,这时候也会返回true,完全符合你“不超过24小时”的需求。

另外还有个简化写法,因为Date对象直接和数值相减时,会自动调用getTime(),所以这段判断逻辑也可以写成:

return now - mtime <= twentyFourHoursMs;

效果和之前的代码完全一样,看你个人习惯选择就行。

内容的提问来源于stack exchange,提问作者kfx

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.27 20:29:08