node.js - 如何从上次修改日期过滤文件
问题描述
我需要知道如何提及“过滤”每个日期的文件,例如当天的文件:2 到 12。
常量 fs = 要求('fs'); const testFolder = 'C:/Users/duff/Downloads/xmlpath/'; fs.readdirSync(testFolder).forEach(file => { //从文件夹中读取文件 fs.stat(testFolder+file,'utf8', function(err,data){ 控制台.log(data.mtime); // 打印最后修改日期 } ); });
我已经尝试使用此代码,但我得到所有文件的日期而不过滤它们
解决方案
所以我认为你想要做的是提供一个日期范围并返回该范围内的文件。
我正在剥离时间并与这里的日期进行比较
const fs = require('fs')
const testFolder = './test'
const parseDate = timestamp => new Date(timestamp).toISOString().slice(0, 10)
const handler = async (f, t) => {
const startDate = parseDate(f)
const endDate = parseDate(t)
const timestamp = file => {
return new Promise((resolve, reject) => {
fs.stat(`${testFolder}/${file}`, 'utf8', (err, data) => {
if (err) return reject(err)
return resolve({ filename: `${testFolder}/${file}`, date: parseDate(data.mtime) })
})
})
}
const timestamps = await Promise.all(fs.readdirSync(testFolder).map(timestamp))
return timestamps.filter(({ date }) => date >= startDate && date <= endDate)
}
handler('2020-04-01', '2020-04-10')
然后这将产生一个像这样的对象数组
[ { filename: 'C:/Users/duff/Downloads/xmlpath/test1', date: '2020-04-09' },
{ filename: 'C:/Users/duff/Downloads/xmlpath/hello', date: '2020-04-09' },
{ filename: 'C:/Users/duff/Downloads/xmlpath/new', date: '2020-04-10' },
{ filename: 'C:/Users/duff/Downloads/xmlpath/yes', date: '2020-04-10' } ]
推荐阅读
- javascript - 如何在未定义的对象上使用三元运算符
- c# - 有没有办法让多个应用程序引用具有其他项目引用的全局项目
- django - 将时间戳存储到数据库
- mysql - 非常慢的 MySQL 删除
- reactjs - 希望将来自“https://startbootstrap.com/”的免费模板集成到我的反应应用程序中
- android - 在旧应用程序中迁移到 New Places SDK 客户端
- vbscript - 为什么我必须用 WScript 编写 WScript.Echo 而 CreateObject 不是必须的?
- python - 无法从 MS Visual Code 的 pylint 中找到 Crypto 库,但可以从命令行中找到
- python - 如何在电子邮件正文中输入发件人姓名
- reactjs - 调用多次调度后无法获取更新状态