【发布时间】:2011-11-25 10:48:58
【问题描述】:
我正在尝试使用 node.js 检索服务器上文件的最后修改日期。
我试过了
file.lastModified;
和
file.lastModifiedDate;
两者都以未定义的形式返回。
【问题讨论】:
标签: node.js
我正在尝试使用 node.js 检索服务器上文件的最后修改日期。
我试过了
file.lastModified;
和
file.lastModifiedDate;
两者都以未定义的形式返回。
【问题讨论】:
标签: node.js
使用异步/等待:
const fs = require('fs').promises;
const lastModifiedDate = (await fs.stat(filePath)).mtime;
【讨论】:
只需添加 Sandro 所说的内容,如果您想尽可能快执行检查,而无需解析日期或任何内容,只需获取以毫秒为单位的时间戳(数字),请使用 mtimeMs .
异步示例:
require('fs').stat('package.json', (err, stat) => console.log(stat.mtimeMs));
同步:
console.log(require('fs').statSync('package.json').mtimeMs);
【讨论】:
对于节点 v 4.0.0 及更高版本:
fs.stat("/dir/file.txt", function(err, stats){
var mtime = stats.mtime;
console.log(mtime);
});
或同步:
var stats = fs.statSync("/dir/file.txt");
var mtime = stats.mtime;
console.log(mtime);
【讨论】:
util.inspect()?
stats.mtime已经是一个Date对象了。
在这里您可以获取文件的最后修改时间(以秒为单位)。
fs.stat("filename.json", function(err, stats){
let seconds = (new Date().getTime() - stats.mtime) / 1000;
console.log(`File modified ${seconds} ago`);
});
输出类似“文件在 300.9 秒前修改”
【讨论】:
seconds = (new Date().getTime() - new Date(stats.mtime).getTime()) / 1000;
你应该使用 stat 函数:
fs.stat(path, [callback])
异步统计(2)。回调有两个参数(err,stats),其中 stats 是一个 fs.Stats 对象。它看起来像这样:
{ dev: 2049
, ino: 305352
, mode: 16877
, nlink: 12
, uid: 1000
, gid: 1000
, rdev: 0
, size: 4096
, blksize: 4096
, blocks: 8
, atime: '2009-06-29T11:11:55Z'
, mtime: '2009-06-29T11:11:40Z'
, ctime: '2009-06-29T11:11:40Z'
}
如您所见,mtime 是最后修改时间。
【讨论】: