Я пытаюсь получить последнюю измененную дату файла на сервере с помощью node.js.
Я пробовал
file.lastModified;
и
file.lastModifiedDate;
оба возвращаются как undefined.
Я пытаюсь получить последнюю измененную дату файла на сервере с помощью node.js.
Я пробовал
file.lastModified;
и
file.lastModifiedDate;
оба возвращаются как undefined.
Для узла 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);
Вы должны использовать функцию 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
- это последнее измененное время.
Здесь вы можете получить файл с последним измененным временем в секундах.
fs.stat("filename.json", function(err, stats){
let seconds = (new Date().getTime() - stats.mtime) / 1000;
console.log(`File modified ${seconds} ago`);
});
Выводит что-то вроде "Файл изменен 300,9 секунды назад"
Просто добавив то, что сказал Сандро, если вы хотите выполнить проверку как можно быстрее, не анализируя дату или что-либо еще, просто получите mtimeMs
метку в миллисекундах (число), используйте mtimeMs
. Синхронный пример:
js require('fs').stat('package.json', (err, stat)=>{console.log(stat.mtimeMs)})
Синхронный:
js console.log(require('fs').statSync('package.json').mtimeMs)