アプリ版:「スタンプのみでお礼する」機能のリリースについて

windows2000上で、perlを使っています。
ファイルをオープンして、そのファイルの作成日付を知りたい、ということで、 ststを使って、求めようとしました。
$modtime = (stat("$filename"))[9] ;
print "$modtime\n";

ところが、具体的な出力は、
1177281000
のようなものでした。 2007/05/01がでてくるものと期待したのですが、どのようにすれば、正しい、日付を得ることができるのでしょうか?

A 回答 (2件)

time関数同様、1970年1月1日からの経過秒数が返されていますので、


localtime関数等で変換する必要があります。

"perl stat localtime"で検索すると、参考になりそうなページがいくつか見つかるかと思います。
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/05/02 19:38

別に間違った情報が出ているわけではなくて、


それはある時間を表すデータなんですけどね
(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
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/05/02 19:39

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!