PHP:ファイルの作成日を取得するにはどうすればよいですか?


83

たくさんのファイルがあるフォルダを読んでいます。

ファイルの作成日を取得するにはどうすればよいですか。それを取得するための直接的な機能は見当たりません。

あるfilemtimefilectime

また、ファイルが変更されていない場合はどうなりますか?

回答:


111

filectimeを使用します。Windowsの場合は作成時間を返し、Unixの場合は(ほとんどのファイルシステムで)作成時間がないため、取得できる最善の変更時間を返します。

一部のUnixテキストでは、ファイルのctimeはファイルの作成時間と呼ばれていることにも注意してください。これは間違っています。ほとんどのUnixファイルシステムにはUnixファイルの作成時間はありません。


ファイルが最後に変更された時刻を返します。失敗した場合はFALSEを返します。時刻はUnixタイムスタンプとして返​​されます。
zod 2010

@zod最初の行より少し先を読むと、もっと理解できるかもしれません。コメントにも少し入ってください。
Alin Purcaru 2010

それは作成日ではありません。私が言ったのはそれだけです:
zod 2010

11
filemtimeLinuxの場合、filectime所有者の間に変更され、他の操作と同様に権限が変更されるため、より正確になります。Linuxで作成時間を取得する機会が増えるfilemtime
Fedir RYKHTIK 2014年

このphp関数を実行するか、最後に更新されたMySQLフィールドをプルする方が速いでしょうか?私の場合、画像パスはDBに保存されており、すでにselectクエリを実行しています
droohJun

16

これは、次のPHPドキュメントから抜粋したサンプルコードです:https//www.php.net/manual/en/function.filemtime.php

// outputs e.g.  somefile.txt was last changed: December 29 2002 22:16:23.

$filename = 'somefile.txt';

if (file_exists($filename)) {

    echo "$filename was last modified: " . date ("F d Y H:i:s.", filemtime($filename));
}

コードはファイル名を指定し、それが存在するかどうかを確認してから、を使用して変更時刻を表示しますfilemtime()

filemtime() ファイルへのパスである1つのパラメーターを取ります。これは相対的または絶対的です。


4
Rakeshはあなたのコードを説明してください、ただいくつかのコードを投稿して人々がそれを理解することを期待するのではありません。
persijn 2018

2
このコードのみの投稿が質問に答える可能性がありますが、その理由の説明を追加してください。これは、将来の読者が自分の状況に対する答えを評価するのに役立ちます。
トムブランバーグ2018

1
この関数filemtime()は変更時刻を返します。
ステファン

Michael、filemtime()関数の意味は明らかではないので、コードはコメントに値します。
ラジウム

コードはファイル名を指定し、それが存在するかどうかを確認してから、filemtime()を使用して変更時刻を表示します。filemtime()は、ファイルへのパスである1つのパラメーターを取ります。これは相対的または絶対的です。上記の例は、PHPドキュメントからコピーされています。php.net/ manual / en / function.filemtime.php
Harvey Dobson

8

残念ながら、Linuxで実行している場合は、最終変更日のみが保存されるため、情報にアクセスできません。

それはあなたのファイルシステムにわずかに依存します。ext2とext3は作成時間をサポートしていないことは知っていますが、ext4はサポートしていると思います。


-3

私はこのトピックが非常に古いことを知っていますが、誰かが答えを探している場合に備えて、私として、私は私の解決策を投稿しています。

このソリューションは、ファイルの先頭に追加のデータがあってもかまわない場合に機能します。

基本的に、ファイルが存在しない場合は、ファイルを作成し、最初の行に現在の日付を追加するという考え方です。次に、で最初の行を読み取り、fgets(fopen($file, 'r'))それをDateTimeオブジェクトまたは何かに変換し(奇妙な形式で保存しない限り、明らかに生で使用できます)、出来上がりです-作成日があります!たとえば、ログファイルを30日ごとに更新するスクリプトは次のようになります。

if (file_exists($logfile)) {
            $now = new DateTime();
            $date_created = fgets(fopen($logfile, 'r'));
            if ($date_created == '') {
                file_put_contents($logfile, date('Y-m-d H:i:s').PHP_EOL, FILE_APPEND | LOCK_EX);
            }
            $date_created = new DateTime($date_created);
            $expiry = $date_created->modify('+ 30 days');
            if ($now >= $expiry) {
                unlink($logfile);
            }
        }

5
日付を取得するためにファイルを変更または削除する必要があるのはなぜですか?これは元の問題の解決策ではないようです
Nico Haase 2018年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.