如何获取文件夹中所有文件的上次修改日期并将其与特定日期进行比较? PHP

时间:2011-11-06 05:51:55

标签: php datetime last-modified strpos filemtime

有没有人知道如何获取文件夹中所有文件的上次修改日期并将其与特定日期进行比较?

到目前为止,我有这个。

<?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。

2 个答案:

答案 0 :(得分:0)

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

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

您的代码无效,因为您在执行初始filemtime()调用时没有为$file分配值,因此返回布尔值FALSE以进行转换0格式的整数date()。你所在的时区是负GMT,所以在1970年1月1日之前稍微转换为日期,这是UTC中的时间0。

您需要的是:

foreach (glob("$folder/*") as $team) { 
    $lastmoddate = filemtime("$folder/$team");
    ... date stuff ...
    $sort[]= basename($team);
}

答案 1 :(得分:0)

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

  1. 您只能一次获得lastmoddate,不是现有文件,而是某些未定义(尚未)$ file

  2. 你约会对比没有意义。比方说,即使您的文件今天已被修改,它的日期永远不会 今天的日期,因此,您的所有比较都将无法确定。至少使用>===进行比较,而不是>