Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 删除早于特定月份的文件_Php_Date - Fatal编程技术网

Php 删除早于特定月份的文件

Php 删除早于特定月份的文件,php,date,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 />"; e

我创建了这个脚本:

$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

我想检查文件是否比那个月旧a.k.a dateNow-dateFile?月数?

如果您想删除所有超过一个月的文件,并且您在linux机器上,您可以使用bash命令来满足您的请求。在windows上,您需要另一个命令,但它也可以工作

此命令在该文件夹的/path/to/files中查找所有超过30天的文件并将其删除。确保您的路径正确,否则将删除错误的文件

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

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

从当前日期和文件日期获取差异;并检查是否超过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

你是这样做的

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天

你说坐骑是什么意思?月,分钟还是什么,我很困惑哦抱歉,月,编辑!请看,您可以将日期间隔设置为月或任何您喜欢的格式。您还可以使用$diff->format“%m”获取months@xander没错✔我认为这个选项对于这个问题来说太大了。你可以像我一样用更短的方式做。请记住,那是上个月的第一天。所以可能要超过30天。我添加了另一个函数,用于检查文件是否比现在的时间早30天。echo$dateFile;//2017年8月3日10:54:00 echo;ifstrtotime$dateFileif(strtotime(dateFile) < strtotime('first day of last month', time())) { //file is older than 1 month }
if(strtotime(dateFile) < (time()-2592000)) {
   //file is older than 1 month
}