PHP:如何获取文件创建日期?


83

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

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

filemtimefilectime

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

Answers:


111

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

还要注意,在某些Unix文本中,文件的ctime称为文件的创建时间。错了 在大多数Unix文件系统中,没有为Unix文件创建时间。


返回文件的最后更改时间,如果失败则返回FALSE。该时间作为Unix时间戳返回。
zod 2010年

@zod如果您比第一行读得更多,您可能会了解更多。也进入评论一点。
Alin Purcaru,2010年

那不是创建日期。以上就是我所说的:-)
zod 2010年

11
filemtime对于Linux来说,更好,更精确,因为filectime在所有者,许可权更改以及其他操作期间会进行更改。您将有更多机会使用filemtime
Fedir RYKHTIK

运行此php函数或拉出MySQL字段进行最后更新会更快吗?在我的情况下,图像路径存储在DB中,并且已经在运行选择查询
drooh

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

2
尽管此仅代码发布的帖子可能会回答该问题,但请添加原因说明。这将有助于将来的读者评估其情况的答案。
汤姆·布伦伯格

1
该函数filemtime()返回修改时间。
斯特凡

迈克尔,由于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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.