人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

以下のファイルの作成日時を取得したいのですが、
-rw-r--r-- 1 ****** *** 0 Sep 19 14:29 1111111111_5555555_10999
-rw-r--r-- 1 ****** *** 0 Sep 19 14:29 2222222222_6666666_10998
-rw-r--r-- 1 ****** *** 0 Sep 19 13:32 3333333333_5555555_10999

PHPで、以下のようにすると、

$file_name_csv = 1111111111_5555555_10999;
echo "$file_name_csv last modified: " . date ("F d Y H:i:s.", filemtime($file_name_csv)) ."\n";

実行結果:
1111111111_5555555_10999 last modified: January 01 1970 09:00:00.

となってしまいます。
これをファイル更新の時間、Sep 19 14:29という値を代入することは
可能なのでしょうか?

●質問者: hopefully
●カテゴリ:就職・転職 コンピュータ
✍キーワード:00 echo January PHP ファイル
○ 状態 :終了
└ 回答数 : 5/5件

▽最新の回答へ

1 ● kurukuru-neko
●60ポイント

date

http://jp.php.net/manual/ja/function.date.php

表示したいのが

Sep 19 14:29の場合

M d H:s

※:lsの結果だと思いますが、システムにより表示される

内容は違います。 去年のファイルだと年が入ったりします。


2 ● zayin
●10ポイント

例えば、存在しないファイル名をfilemtime関数に渡すと戻り値がfalseとなり、結果、質問文の場合だとdate関数はJanuary 01 1970 09:00:00を返します。

filemtime関数に渡している$file_name_csvには正しいファイル名が代入されていますか?(例えば、phpスクリプトとデータファイルは同じディレクトリにありますか? また質問文のスクリプト1行目の右辺がクォートで囲まれていませんが、実際のスクリプトではちゃんと囲まれていますか?)


3 ● kunkichi
●10ポイント

awkじゃだめですか?(笑)

$ ls -l | awk '{ print $6, $7, $8 }'


4 ● m-takagi
●10ポイント

$file_name_csv = 1111111111_5555555_10999;

echo "$file_name_csv last modified: " . date ("F d Y H:i:s.", filemtime($file_name_csv)) ."\n";

とりあえず、

$file_name_csv = 1111111111_5555555_10999;
if (file_exists($file_name_csv)) {
 echo "$file_name_csv last modified: " . date ("F d Y H:i:s.", filemtime($file_name_csv)) ."\n";
} else {
 echo "File not found.\n";
}

のようにして試してみることをお勧めします。

ところで、

$file_name_csv = 1111111111_5555555_10999;

ほんとにこのコードで動きましたか?

私の環境では

$file_name_csv = "1111111111_5555555_10999";

としないと Parse Error になったんですけど……


5 ● tobeoscontinue
●10ポイント

実行結果からさっしてパスが通っていないと思います。

PHPのファイルと1111111111_5555555_10999などを同じディレクトリーで

実行してみて下さい。

>>ファイルの作成日時を取得したいのですが、

ファイルの作成日時はfilectimeだと思うのですがPHP マニュアルによれば

『いくつかのUNIXでは、ファイルのctimeはファイルの作成時間として参照 されます。これは間違っています。多くのUNIXファイルシステムでは UNIXファイルの作成時間は存在しません。』

ということらしいです。

ファイル更新の時間を代入するのでは

bool touch ( string filename [, int time [, int atime]] )

が使えます。

がパーミッションが644なのでこの状態では更新できないと思いますが

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ