我正在读取一个包含大量文件的文件夹。
如何获取文件的创建日期。我没有看到任何直接的函数来获取它。
这里有filemtime
和filectime
。
如果文件没有被修改,会发生什么呢?
发布于 2017-12-28 19:12:36
下面是取自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个参数,它是文件的路径,可以是相对路径,也可以是绝对路径。
发布于 2010-12-10 01:46:43
不幸的是,如果您在linux上运行,则无法访问该信息,因为只存储了最后修改日期。
它确实稍微依赖于您的文件系统。我知道ext2和ext3不支持创建时间,但我认为ext4支持。
发布于 2018-03-29 19:28:18
我知道这个话题太老了,但是,如果有人像我一样在寻找答案,我会把我的解决方案贴出来。
如果你不介意在文件的开头有一些额外的数据,这个解决方案是可行的。
基本上,这个想法是,如果文件不存在,创建它并在第一行追加当前日期。接下来,您可以使用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);
}
}
https://stackoverflow.com/questions/4401320
复制相似问题