ファイルのプロパティ情報の取得
fs.Stats
const stats = fs.statSync( ファイルパス );
console.log(stats.mtime);
fs.Statsの全てのパラメータはこちら。
参考 File systemNode.jsWindowsのファイルプロパティ:作成日時
stats.birthtime(Dateオブジェクト)
このファイルの作成時刻を示すタイムスタンプ。
Windowsのファイルプロパティ:更新日時
stats.mtime(Dateオブジェクト)
このファイルが最後に変更された時刻を示すタイムスタンプ。
Windowsのファイルプロパティ:アクセス日時(Winのプロパティとずれてることが多々ある)
stats.atime(Dateオブジェクト)
このファイルが最後にアクセスされた時刻を示すタイムスタンプ。
Windowsのファイルプロパティ:表示されていない。Unix系なら確認できる。
stats.ctime(Dateオブジェクト)
ファイルステータスが最後に変更された時刻を示すタイムスタンプ。
もっとも使うのは更新日時だと思う。
これにずれは確認できなかったので信用して良さそう。
Dateオブジェクトの取得や比較、計算
JavaScriptのDateオブジェクトを検索すれば色々出てくる。
書籍「JavaScipt逆引きレシピ」の121ページにも色々載ってる。
const stats = fs.statSync(this.fullpath);
console.log(stats.mtime);
console.log("ファイル更新日時 " + stats.mtime.getFullYear() + "年" + (stats.mtime.getMonth() + 1) + "月" + stats.mtime.getDate() + "日" + stats.mtime.getHours() + "時" + stats.mtime.getMinutes() + "分");
getMonthは0~11が返ってくることに注意。
2021-05-01T03:25:53.913Z
ファイル更新日時 2021年5月1日12時25分
mtimeとctimeの違い
参考 ctimeは、内容か属性が修正された日時を指し、作成日時を指すのではない試験運用中なLinux備忘録・旧記事mtimeとctimeの違い
タイムスタンプの種類 内容の変更をしたとき 属性の変更をしたとき mtime(Modify) 更新される 更新されない ctime(Change) 更新される 更新される mtimeは、touchコマンドで任意に変更可能だが、ctimeは変更できない。touchコマンドを実行(タイムスタンプ属性を変更)したときの時刻が新しくctimeに記録される。また、cpコマンドの-pオプションを付けてコピーした場合、mtimeは保持される(アクセス日時も保持されるが、noatime無しの場合、コピー元のファイルのアクセス日時が更新される)が、ctimeはコピーを実行したときの日時となる。
属性変更の簡単な例。chmodにより、ctimeのみが更新されることが分かる。