• ベストアンサー

ファイル作成日

windows2000上で、perlを使っています。 ファイルをオープンして、そのファイルの作成日付を知りたい、ということで、 ststを使って、求めようとしました。 $modtime = (stat("$filename"))[9] ; print "$modtime\n"; ところが、具体的な出力は、 1177281000 のようなものでした。 2007/05/01がでてくるものと期待したのですが、どのようにすれば、正しい、日付を得ることができるのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.1

別に間違った情報が出ているわけではなくて、 それはある時間を表すデータなんですけどね (epochからの経過秒数)。 これを人間がわかりやすい表記にするには幾つかやり方はあります。 use strict; use warnings; my $target = 'test.dat'; my $ctime = (stat $target)[9]; print scalar localtime($ctime), "\n"; my ($year, $month, $day) = (localtime($ctime))[5,4,3]; printf "%04d/%02d/%02d\n", $year+1900, $month+1, $day; use POSIX qw(strftime); print strftime("%Y/%m/%d", localtime($ctime)), "\n"; 実行結果: Mon Oct 30 17:44:11 2006 2006/10/30 2006/10/30

noname#95859
質問者

お礼

ありがとうございます。うまくいきました。

その他の回答 (1)

  • hito-koto
  • ベストアンサー率53% (14/26)
回答No.2

time関数同様、1970年1月1日からの経過秒数が返されていますので、 localtime関数等で変換する必要があります。 "perl stat localtime"で検索すると、参考になりそうなページがいくつか見つかるかと思います。

noname#95859
質問者

お礼

ありがとうございます。理解しました。

関連するQ&A