PHP:我怎样才能获得文件创建日期?

时间:2010-12-09 17:38:15

标签: php file

我正在阅读包含大量文件的文件夹。

如何获取文件的创建日期。我没有看到任何直接的功能来获得它。

filemtimefilectime

如果文件未被修改,会发生什么?

5 个答案:

答案 0 :(得分:94)

使用filectime。对于Windows,它将返回创建时间,而对于Unix,更改时间是最好的,因为在Unix上没有创建时间(在大多数文件系统中)。

  

另请注意,在某些Unix文本中   文件的ctime称为   是文件的创建时间。   这是错的。没有创造   在大多数Unix中Unix文件的时间   文件系统。

答案 1 :(得分:7)

不幸的是,如果您在Linux上运行,则无法访问该信息,因为只存储了上次修改日期。

它稍微取决于你的文件系统。我知道ext2和ext3不支持创建时间,但我认为ext4可以。

答案 2 :(得分:5)

$filename = 'somefile.txt';

if (file_exists($filename)) {

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

答案 3 :(得分:1)

Mac OS X有一个解决方案,它支持在其文件系统中创建日期:How do I get actual creation time for a file in PHP on a Mac?

答案 4 :(得分:-2)

我知道这个主题已经超级老了,但是,如果有人正在寻找答案,就像我一样,我正在发布我的解决方案。

如果你不介意在文件的开头有一些额外的数据,这个解决方案就可以了。

基本上,想法是,如果文件不存在,则创建它并在第一行追加当前日期。 接下来,您可以使用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);
            }
        }