1

有谁知道一种方法来获取文件夹中所有文件的最后修改日期并将其与某个日期进行比较?

到目前为止,我有这个。

<?php
    $lastmoddate = (date("Ymd", filemtime($file)));
    $todaysdate = date("Ymd", time());

    $result = array(); 
    $folder = ('uploaded_files/');     
    $handle = opendir($folder);

    foreach (glob("$folder/*") as $team){$sort[]= end(explode('/',$team));}

    while (false !==($file = readdir($handle)))
    {
        if ( $file != ".." && $file != "." )
        {
            $file = "uploaded_files/".$file ;
            if (!is_dir($file))
                $result[] = $file;
        } 
    }
    closedir($handle);


    foreach ($result as $file){
        if ($lastmoddate > $todaysdate){
            if (strpos($file, "+12:00") !==false){
                echo "$file".",".date ("h:i d/m/Y", filemtime($file))."\r\n"."<br/>";
            }
        }
    }
?>

这不起作用,因为 $lastmoddate = 给了我日期 1969 12 31。

4

2 回答 2

0

PHP 的filemtime()(在内部基本上只是调用stat()并只返回 m-time 值)一次只处理一个文件。

您已经glob()在脚本中调用以获取文件名列表。将 filemtime() 调用放在该循环中以获取每个文件的 mtime,并在其中进行比较。

您的代码无法正常工作,因为您在$file执行初始 filemtime() 调用时尚未为其分配值,因此它返回一个FALSE表示失败的布尔值,该值被转换为0用于date()格式化的整数。您所在的时区为负格林威治标准时间,因此转换为稍早于 1970 年 1 月 1 日之前的日期,即 UTC 的时间 0。

你需要的是:

foreach (glob("$folder/*") as $team) { 
    $lastmoddate = filemtime("$folder/$team");
    ... date stuff ...
    $sort[]= basename($team);
}
于 2011-11-06T05:59:38.420 回答
0

到目前为止,我可以在您的代码中看到 2 个不一致的内容。

  1. 您仅获得一次lastmoddate ,不是针对现有文件,而是针对一些未定义(尚未)的 $file

  2. 你约会 copmparison 没有任何意义。说,即使您的文件今天已被修改,它的日期永远不会超过今天的日期,因此,您所有的比较肯定会失败。至少使用>=or==来比较,而不是>

于 2011-11-06T06:00:17.103 回答