如何查看哪个日期是最新的?

时间:2017-11-02 14:14:56

标签: php date

$files = scandir(__DIR__, SCANDIR_SORT_DESCENDING);

首先,我尝试检查日期是否有排序类型,但遗憾的是我找不到,所以我决定使用filemtime

$latest = date("d Y H:i:s.");
printf($latest);
foreach($files as $value) {
    if ($value != "..") {
        if($value != ".") {
            $latestnew = date("d Y", filemtime($value));

            if($latestnew > $latest) {
                $latest = $value;
            }
        }
    }
}
printf($latest);

你可以看到我的数组中有很多文件。最新的文件名应该在$ latest变量中。我知道">"检查不起作用,但我无法找到另一种解决方案。感谢。

2 个答案:

答案 0 :(得分:2)

根据PHP Manual

  

int filemtime (string $ filename)

     

返回上次修改文件的时间,或者失败时返回FALSE。该   时间以 Unix时间戳的形式返回,适用于date()   功能

比较整数格式比比较日期更容易和舒适。

$latestFilename = '';
$latestTime = 0;    
foreach($files as $filename) {
        if ($filename != "..") {
            if($filename != ".") {
                $currentFileTime = filemtime($filename);

                if($currentFileTime > $latestTime) {
                    $latestFilename = $filename;
                    $lastestTime = $currentFileTime;
                }
            }
        }
    }

另一种选择是创建一个DateTime对象并使用定义的比较方法。

答案 1 :(得分:1)

由于您现在开始使用当前时间 ,因此没有文件应该比现在更新 - 并且您要分配文件的名称以进行进一步比较,而不是实际要检查的时间戳。不要将所有内容都转换为日期,而是保留实际的时间戳。这种方式更适合比较,并将文件名保存在单独的变量中。

$latest = 0;
$latest_name = null;

foreach($files as $value) {
    if (($value != "..") && ($value != ".")) {
        $latestnew = filemtime($value);

        if($latestnew > $latest) {
            $latest = $latestnew;
            $latest_name = $value;
        }
    }
}

print(date("d Y H:i:s", $latest) . ' - ' . $latest_name);

这将打印最新文件的格式化时间戳及其名称。如果在调用$value时它不在当前目录中,您可能还希望在filemtime前加上文件的路径。即filemtime($path . '/' . $value);