ファイルの最終更新日時(タイムスタンプ)を取得するには

PHP

filemtime関数を使えばUnixタイムスタンプ(1970年1月1日0時からの秒数)で取得できる。

// 1970年1月1日0時からの秒数で取得
filemtime('./hoge.txt');

filemtime 関数 | PHP Manual
http://php.net/manual/ja/function.filemtime.php

Python

import os

# 1970年1月1日0時からの秒数で取得
print os.path.getmtime('./hoge.txt')

Ruby / JRuby

# Timeオブジェクトで取得
p File.stat('./hoge.txt').mtime
# => 2013-11-22 11:08:01 +0900

# または
# Timeオブジェクトで取得
p File.mtime('./hoge.txt')
# => 2013-11-22 11:08:01 +0900

# 現在時刻との差を秒単位で取得
p DateTime.now.to_time - File.mtime("test.txt")
# => 54.419274511
# よくわからないがJRubyだと小数点以下3桁までしか表示されない
# タイムスタンプ取得精度のJVMでの制約かな

Perl

my ($sec, $min, $hour, $mday, $mon, $year) = localtime((stat($self))[9]);
$year = $year + 1900;
$mon= $mon + 1;

printf("%04d-%02d-%02dT%02d:%02d:%02d\n", $year, $mon, $mday, $hour, $min, $sec);
# => 2015-08-21T12:35:02

ちなみに stat($self))[9] は1970年1月1日0時0分からの秒数を得られる。

printf("%d\n", (stat($self))[9]);
# => 1440128102

sh (シェルスクリプト)

もし2つのファイルのタイムスタンプを比較したいだけであれば簡単にできる。

if [ ファイル名1 -nt ファイル名2 ]; then
    # ファイル1のほうが新しい場合の処理
    ...
fi

if [ ファイル名1 -ot ファイル名2 ]; then
    # ファイル1のほうが古い場合
    ...
fi

if の次の [ というのは test というコマンドの別名で、見た目が他の言語にあるようなif文の条件式を囲む括弧に似ている。

関連

このサイトは筆者(hydrocul)の個人メモの集合です。すべてのページは永遠に未完成です。
スポンサーリンク