删除超过特定月份的文件

时间:2017-08-03 07:44:40

标签: php date

我创建了该脚本:

$zips = glob("*.zip");

usort($zips, function($a, $b) { return filemtime($a) - filemtime($b); });

$dateFile = date("F d Y H:i:s", filectime($zips[0]));
$dateNow = date("F d Y H:i:s");

echo "dateFile = " . $dateFile;
echo "<br />";
echo "dateNow = " . $dateNow

输出是:

dateFile = August 03 2017 10:23:47
dateNow = August 03 2017 10:43:27

我想检查那个月的文件是否更旧a.k.a dateNow - dateFile?几个月?

3 个答案:

答案 0 :(得分:0)

从当前日期和文件日期获取差异;并检查是否超过30天删除它:

$date1 = date_create(date("Y-m-d")); // current date
$date2 = date_create($file_date); // change file date to Y-m-d format
$diff  = date_diff($date1,$date2);
if($diff->format("%R") == '+' && $diff->format("%a") != 0){
    if($diff->format("%a") > 30)
        //delete file
}else
    //delete file

答案 1 :(得分:0)

您可以执行以下操作

if(strtotime(dateFile) < strtotime('first day of last month', time())) {
   //file is older than 1 month
}

您也可以在30天后使用此功能。这将检查文件是否超过您执行此条件后30天的时间。

if(strtotime(dateFile) < (time()-2592000)) {
   //file is older than 1 month
}

2592000是30天的秒数。

答案 2 :(得分:-1)

如果要删除所有超过一个月的文件并且您使用的是Linux计算机,则可以使用bash命令来完成请求。在Windows上你需要另一个命令,但它也可以。

此命令在/path/to/files此文件夹中查找超过30天的所有文件并删除它们。 确保您的路径正确或错误的文件被删除!

find /path/to/files* -mtime +30 -exec rm {} \;

我忘了发布正确的PHP代码!

exec("find /path/to/files* -mtime +30 -exec rm {} \;");