如何在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
相关产品推荐
相关产品推荐

